use*_*889 10 math graph projection matrix
我有问题或者好,我不知道如何将x,y,z值转换为3d点到2d点,我必须绘制投影,其中我有x,y,z值的点,但我不知道如何将它们转换为2d,这样我就可以将它们移动到我的轴上.

我一直在环顾wiki和google,但是我不太确定我应该使用哪些矩阵变换来获得想要的结果.
nbo*_*eel 13
让我们首先假设看着你的场景的相机以原点为中心,并观察-z方向.然后:
透视投影由下式给出:
x' = x/z
y' = y/z
正交投影由下式给出:(
x' = x
y' = y
即,只丢弃z分量)
现在您已应用上述步骤,您可能会获得一个点(x',y') = (-28.4, +134.5).您现在需要根据屏幕分辨率和相机"缩放系数"和宽高比来缩放和居中:例如,您可能希望乘以Zoom并添加screen_center到您的组件x和y组件(注意:大多数图形渲染系统的y方向指向向下,所以你可能需要交换y组件的标志).您可能仍然会得到负坐标或坐标大于画布大小的像素.只是丢弃它们:这意味着它们不在您的视锥之内.
最后,您可能想知道如果您的相机没有朝向-z或未在原点居中,该怎么办.对于后者,它很简单:在执行任何其他操作之前,只需将相机坐标减去所有3D点的分量.对于相机旋转,它实际上也非常简单:您只需要在执行其他任何操作之前以相反的方式旋转您的相机.这只意味着您需要将所有3D坐标乘以相机旋转矩阵的转置.这一步骤背后的想法是,移动相机与在相反方向上移动点完全相同(并且发生旋转矩阵的逆是同一矩阵的转置).