在opengl中,如何获得椭球体的法向量呢?如果直接通过椭球体曲面方程计算的话,可以得到其曲面上任意点(x,y,z)的法向量(ax+b,cy+d,ez+f),但是这个法向量的三个参数都有变量x、y、z,这该如何调用函数glNomal3fv()呢?(我看书上写的:这个函数的参数要求是常数)
另外如果上面的问题解决了,那么在画椭球体之前调用函数glNomal3fv(),椭球体就会有一定的亮度吗?(当然也用了光照)
请高手多多指点,非常感谢啊!!!

解决方案 »

  1.   

    椭球中心为center椭球面上任意点为P那么该点的法向量就是P-center
      

  2.   

    http://topic.csdn.net/t/20050130/16/3764188.html
      

  3.   

    因为法向量一般与光照反射有关,因此法向量一般是在3D模型的材质里面确定的吧,一般在读取材质信息的同时也就得到了法向量吧。glNormal3f的定义:
    glNormal3f(GLfloat nx,
               GLfloat ny,
               GLfloat nz)
      

  4.   

    glNormal3fv的定义是:void gnNormal3fv(const GLfloat *v); 其中v是一个有三个分量的向量,实际上与glNormal3f的使用一样。
      

  5.   

    不规则的图形你可以根据顶点,自己计算法向量的。一个顶点被多个面共享,计算每个面的法向量,求和并规格化。http://www.lighthouse3d.com/opengl/terrain/index.php3?normals。既然椭圆是规则的,(x,y,z)的法向量(ax+b,cy+d,ez+f),你可以对循环的每个坐标,得到相应的法向量(x,y,z)。这里常数的意思不是const类型的变量,而是数值,相对参数方程而言的。