我在画椭球体时,亮度出现了问题,网友说光照效果是与法向量有关的,所以如何获得椭球体的法向量呢?请高手指点一下,
非常感谢啊!!!
1、
如果直接通过椭球体曲面方程(方程是已知的)计算的话,
可以得到其曲面上任意点(x,y,z)的法向量(ax+b,cy+d,ez+f),但是这个法向量是一个含有x、y、z的变量,
这该如何调用函数glNomal3fv()呢?(这个函数的参数要求是常数)
2、
下面是我用来画轴半径为ra、rb、rc,并绕Z轴旋转45度的椭球体的代码,我只加了两个函数glRotatef和glScalef。
也就是通过旋转、缩放球体来画出椭球体的,如果这样的话,是不求椭球体曲面的法向量实际上就是求这个球体的
法向量?如果这样的话,又该如何求这个球体的法向量呢?
glEnable( GL_LIGHTING );
glEnable( GL_LIGHT0 );
glTranslatef( xo, yo, zo );
glRotatef(45,0.0,0.0,1.0);
glScalef(ra/rc),rb/rc),1.0);
glMaterialfv( GL_FRONT, GL_DIFFUSE, mat_diffuse );
glMaterialfv( GL_FRONT, GL_SPECULAR, mat_specular );
glMaterialfv( GL_FRONT, GL_SHININESS, high_shininess );
auxSolidSphere( rc );
非常感谢啊!!!
1、
如果直接通过椭球体曲面方程(方程是已知的)计算的话,
可以得到其曲面上任意点(x,y,z)的法向量(ax+b,cy+d,ez+f),但是这个法向量是一个含有x、y、z的变量,
这该如何调用函数glNomal3fv()呢?(这个函数的参数要求是常数)
2、
下面是我用来画轴半径为ra、rb、rc,并绕Z轴旋转45度的椭球体的代码,我只加了两个函数glRotatef和glScalef。
也就是通过旋转、缩放球体来画出椭球体的,如果这样的话,是不求椭球体曲面的法向量实际上就是求这个球体的
法向量?如果这样的话,又该如何求这个球体的法向量呢?
glEnable( GL_LIGHTING );
glEnable( GL_LIGHT0 );
glTranslatef( xo, yo, zo );
glRotatef(45,0.0,0.0,1.0);
glScalef(ra/rc),rb/rc),1.0);
glMaterialfv( GL_FRONT, GL_DIFFUSE, mat_diffuse );
glMaterialfv( GL_FRONT, GL_SPECULAR, mat_specular );
glMaterialfv( GL_FRONT, GL_SHININESS, high_shininess );
auxSolidSphere( rc );
解决方案 »
- 程序常常会中断在CMapPtrToPtr::GetValueAt这里,请问是怎么回事呢?
- listctrl 背景色的问题!
- ==100分求问:如何从监听端口发TCP消息(该端口为非阻塞&SO_REUSEADDR)? ==
- CPoint Point[N];
- 换个问题,1楼的问题没人解答,请看3楼的,怎样可以将CFORMVIEW的DIALOG换成另一个DIALOG
- 面对不听话的新手,作为项目负责人,应该怎么处理?
- VC里如何设置windows的桌面(壁纸)?
- DLL输出类的问题
- 请问如何得到CRecordSet类中记录集总数? m_pSet->GetRecordCount();不行啊
- 虚拟IP网络和实际IP网络有什么区别?
- 新人求助VC++RPG游戏编程
- 请问安装程序是如何做的?
亮度出现问题?不知道是什么问题?