在做真实感的球体,其中 x,y,z是球的坐标
for(y=-m_R;y<=m_R;y++)
for(z=-m_R;z<=m_R;z++)
{
x=sqrt(m_R*m_R-z*z-y*y);
Ir=int(m_ColorR+Phong(x,y,z));if(Ir>255)Ir=255;if(Ir<0)Ir=0; ///光照模型
Ig=int(m_ColorG+Phong(x,y,z));if(Ig>255)Ig=255;if(Ig<0)Ig=0;
Ib=int(m_ColorB+Phong(x,y,z));if(Ib>255)Ib=255;if(Ib<0)Ib=0;
pdc->SetPixel(y+100,z+100,RGB(Ir,Ig,Ib));
}但是画出来是个正方型,中间是球,我知道是因为y和Z的坐标的问题,但是要怎么实现才能画出来呢?
for(y=-m_R;y<=m_R;y++)
for(z=-m_R;z<=m_R;z++)
{
x=sqrt(m_R*m_R-z*z-y*y);
Ir=int(m_ColorR+Phong(x,y,z));if(Ir>255)Ir=255;if(Ir<0)Ir=0; ///光照模型
Ig=int(m_ColorG+Phong(x,y,z));if(Ig>255)Ig=255;if(Ig<0)Ig=0;
Ib=int(m_ColorB+Phong(x,y,z));if(Ib>255)Ib=255;if(Ib<0)Ib=0;
pdc->SetPixel(y+100,z+100,RGB(Ir,Ig,Ib));
}但是画出来是个正方型,中间是球,我知道是因为y和Z的坐标的问题,但是要怎么实现才能画出来呢?
解决方案 »
- 使用MFC能操作EXCEL2007么?
- EDIT如何接受回车?急急急!
- 无成员变量的结构体长度
- 求刻度计算算法
- VC 2005的classwizard在哪儿?
- 问题:VC可以读写Word文档吗?怎么弄?thx
- 请教有关media service相关控件.请高人做答!!!谢谢
- 为什么缩小显示bmp位图时候会出现压挤折皱现象
- 如何判断CString 中的某一个字符是否为指定字符?简单问题郁闷一天了。谢谢!
- 我在win2000下编译的程序,主要使用MFC,对于一台新装的win98,需要安装什么支持的动态库什么的不要。为什么新的win98根本不运行该程序,而有的win98就可以呢。
- 自定义控件的重绘?
- VC6.0编译器的注释问题
for(z=-m_R;z <=m_R;z++) 这么遍历不对吧,比如半径为1的球,那么你取了y=1,z=1,就不行了吧。可以考虑对y正常遍历,对z的遍历是依赖于y的,对x的遍历是依赖于y,z的。
for(y=-m_R;y<=m_R;y++)
for(z=-sqrt(m_R*m_R-y*y);z<=sqrt(m_R*m_R-y*y);z++)