画球问题!!

lemonadeqq 2008-11-15 08:06:01
在做真实感的球体,其中 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的坐标的问题,但是要怎么实现才能画出来呢?
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
degree_37 2008-11-15
  • 打赏
  • 举报
回复
可以吧,你放到程序中看一下效果不就知道了么~~
lemonadeqq 2008-11-15
  • 打赏
  • 举报
回复
这么遍历呢?
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++)
degree_37 2008-11-15
  • 打赏
  • 举报
回复
for(y=-m_R;y <=m_R;y++)
for(z=-m_R;z <=m_R;z++)

这么遍历不对吧,比如半径为1的球,那么你取了y=1,z=1,就不行了吧。

可以考虑对y正常遍历,对z的遍历是依赖于y的,对x的遍历是依赖于y,z的。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧