我正在尝试移除围绕其自身对角轴旋转的立方体上的隐藏曲面,并围绕一般y
- 轴。
我正在使用gluLookAt(0, 0, 20, 0, 0, 1, 0, 10, 0)
来查看视图。
然而,它并没有完全产生一个移除良好的表面。
我正在通过以下方式计算法线向量:
GLfloat CalculateVectorNormal(GLfloat fVert1[], GLfloat fVert2[], GLfloat fVert3[], GLfloat fNormalZ)
{
GLfloat Qx, Qy, Qz, Px, Py, Pz;
Qx = fVert2[0]-fVert1[0];
Qy = fVert2[1]-fVert1[1];
Qz = fVert2[2]-fVert1[2];
Px = fVert3[0]-fVert1[0];
Py = fVert3[1]-fVert1[1];
Pz = fVert3[2]-fVert1[2];
fNormalZ = (Px*Qy - Py*Qx);
return fNormalZ;
}
我正在检查fNormalZ
值是否小于0.我认为我对查看内容犯了错误。我相信我只从-z
轴看。这就是为什么我只检查fNormalZ
。
从那时起,我无法从视野中看到很多视线。
感谢任何帮助。我真的需要一些紧急帮助。 非常感谢你提前。
(作业问题,gl函数不允许。)
答案 0 :(得分:0)
法线是矢量,而不是标量。您应该计算X,Y 和 Z的组件并返回它。
在计算矢量之前,您需要减去相机位置(并反向应用其旋转)到面部坐标。然后,您可以在其中一个点和计算的法线之间执行dotProduct,以查找面部的角度。如果角度小于零,则它背离摄像机视点,可以剔除。