我试图制作3D引擎以了解它是如何工作的(我喜欢知道事情是如何工作的)..我听说他们把相机放在某个地方并移动并旋转整个世界 - 那是容易做出唯一的困难就是制作一个函数来乘以矩阵 但我想移动相机,让世界保持在它的位置 - 我看到有些人在做这件事而我实际上更喜欢它......当我试图自己制作时我遇到了一个简单的数学问题 了解问题我将2D转换为1D而不是3D转换为2D(同样的事情) 看看这张图片:
现在我有一个相机位置(x,y)和它的矢量(蓝点)从0到1
然后我从相机到物体制作另一个矢量并将其除以距离以获得从0到1的矢量(白点)
现在距离两个向量(d)的距离是我需要在屏幕上绘制一个点的位移 - 但问题是"哪个方向" ..距离总是正的所以我必须确定第二个点是在方向向量的右边还是在左边 - 它对于眼睛来说非常简单但是使用代码非常困难
当我试图比较(y2-y1)/(x2-x1)时,当一个矢量在四分之一上而另一个矢量在另一个四分之一(坐标平面的四分之一)时,我的结果不正确
那么如何根据另一个向量比较这两个向量来看它在哪里?
我也试过atan2而且我得到了一些不正确的结果,但我认为atan2对于计算机来说会很慢,因为我必须为每个3D点计算2次 如果有更简单的方式告诉我
我用了很多词来描述我的问题,因为我只知道英语中的简单词语