所以......我正在尝试将3D表面投影到屏幕上。
我已经编写了代码来处理旋转和透视以及所有内容,并且当我在一个numpy数组上使用它时,我的投影代码完全符合预期。
我想知道的是如何将其应用于投影3D表面。具体来说,如果表面的一部分位于视点后面,并且部分表面位于视点前方,我应该如何处理?我是否需要计算一个新表面,它只代表我想要投影的表面的可见部分?
例如,假设我试图描绘一个顶点为([10,0,10],[ - 10,0,10],[10,0,-10],[ - 10,0, -10])。我是否需要计算顶点为([10,0,10],[ - 10,0,10],[10,0,0],[ - 10,0,0])的新曲面,然后显示在屏幕上,还是有不同的方式处理被视点切断的平面?
使用正方形,该计算是微不足道的,但是对于任意表面,计算听起来效率相当低。我觉得应该有更好的方法来做到这一点。
沿着X轴和Y轴,在屏幕外绘制物体没有问题,但是沿着Z轴,我正在努力想到一种有效的算法,它不会简单地忽略绘制一个部分落后的表面观点。