gpt4 book ai didi

c++ - 隐藏面移除 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:35 26 4
gpt4 key购买 nike

我正在尝试移除立方体上的隐藏表面,该立方体围绕其自身的对角轴和一般的 y 轴旋转。

我正在使用 gluLookAt(0, 0, 20, 0, 0, 1, 0, 10, 0) 来查看内容。

但是,它并不能完全产生去除良好的表面。

我通过以下方式计算法 vector :

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。我认为我在 View 方面犯了一个错误。我相信我只从 -z 轴看。这就是为什么我只检查 fNormalZ

从那时起,我就再也看不到立方体了。

感谢任何帮助。我真的需要一些紧急帮助。非常感谢您。

(作业题,不允许使用gl函数。)

最佳答案

法线是 vector ,而不是标量。您应该计算 X、Y Z 的分量并将其返回。

在计算 vector 之前,您需要将相机位置减去(并反向应用其旋转)到面部坐标。然后,您在其中一个点和计算出的法线之间执行 dotProduct 以找到面部的角度。如果角度小于零,则它背对着相机视点,可以被剔除。

关于c++ - 隐藏面移除 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5431020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com