Vector 三维到二维-移动摄影机

Vector 三维到二维-移动摄影机,vector,3d,projection,Vector,3d,Projection,我正在尝试制作一个3D引擎,看看它是如何工作的(我喜欢知道事情到底是如何工作的)。。我听说他们把相机放在某个地方,移动并旋转整个世界——这很容易做到,唯一困难的是制作一个矩阵相乘的函数 但我想移动相机,让世界保持在它的位置上——我看到一些人在做,我其实更喜欢这样。。当我试图自己做的时候,我遇到了一个简单的数学问题 为了理解这个问题,我将把2D转换成1D,而不是3D转换成2D(同样的事情) 请看这张图片: 现在我有一个相机位置(x,y),它的矢量(蓝点)从0到1 我做了另一个从相机到物体的向量,

我正在尝试制作一个3D引擎,看看它是如何工作的(我喜欢知道事情到底是如何工作的)。。我听说他们把相机放在某个地方,移动并旋转整个世界——这很容易做到,唯一困难的是制作一个矩阵相乘的函数
但我想移动相机,让世界保持在它的位置上——我看到一些人在做,我其实更喜欢这样。。当我试图自己做的时候,我遇到了一个简单的数学问题
为了理解这个问题,我将把2D转换成1D,而不是3D转换成2D(同样的事情) 请看这张图片:

现在我有一个相机位置(x,y),它的矢量(蓝点)从0到1
我做了另一个从相机到物体的向量,然后除以距离得到一个从0到1的向量(白点)
现在两个向量之间的距离(d)是我需要在屏幕上画一个点的位移,但问题是“哪个方向”。。距离总是正的,所以我必须确定第二个点是在方向向量的右边还是在左边——这对眼睛来说很简单,但使用代码很困难

当我试图比较(y2-y1)/(x2-x1)时,当一个向量在四分之一上,而另一个向量在另一个四分之一(坐标平面的四分之一)上时,我得到了错误的结果

那么,如何根据另一个向量来比较这两个向量,看看它在哪里呢

我还尝试了atan2,得到了一些不正确的结果,但我认为atan2对于计算机来说会很慢,因为我必须为每个3D点计算2次
如果有更简单的方法告诉我


我用了很多词来描述我的问题,因为我只知道简单的英语单词

描述得很好,但你缺少一些细节。。。您使用的是什么图形库?opengl/directx或我不知道…没有库-只是从头开始制作-这样我更了解它。。我只使用函数从一点到另一点画一条线。。矢量函数也是手工制作的:-Dopengl/directx是图形卡的网关,除非您想自己与图形卡对话(完全不建议),否则必须使用其中一个(或vulkan/mantis/etc)。