Java 计算三维空间中的点
我试图定位三维空间中相对于原点(0,0,0)的点。我有3个值来计算这个点:围绕x轴和y轴的旋转角度,以及“视距”。使用这些值,如何在三维空间中相对于原点定位点?我尝试过使用基本的三角函数,但结果似乎是随机的。下图显示了需要执行的操作Java 计算三维空间中的点,java,3d,floating-point,trigonometry,lwjgl,Java,3d,Floating Point,Trigonometry,Lwjgl,我试图定位三维空间中相对于原点(0,0,0)的点。我有3个值来计算这个点:围绕x轴和y轴的旋转角度,以及“视距”。使用这些值,如何在三维空间中相对于原点定位点?我尝试过使用基本的三角函数,但结果似乎是随机的。下图显示了需要执行的操作 “vd”表示“视距” “c”是价值持有人 “(x,y,z)”是我试图找到的坐标 我想做的是找到一个玩家在一定距离外看的点(在玩家的视线中找到一个点,距离一定)。请记住,围绕x轴和y轴的旋转不断变化,但观察距离保持不变。如果任何人对此有任何建议、方法或需要澄清,
- “vd”表示“视距”
- “c”是价值持有人
- “(x,y,z)”是我试图找到的坐标
float c = (float)(Math.cos(Math.toRadians(A00.rot.y)) * view_distance);
locate.y = (float)(Math.sin(Math.toRadians(rot.y)) * view_distance);
locate.x = (float)(Math.cos(Math.toRadians(rot.x)) * c);
locate.z = (float)(Math.sin(Math.toRadians(rot.x)) * c);
编辑:
我的问题是,由于某些原因,当前的设置不起作用。这个数学对我来说似乎是合理的,但在实际的图形设置中,我肯定有什么地方出错了。我建议查找四元数。不需要完全理解它们是如何工作的。您也可以在internet上找到现成的java类。四元数允许您在三维空间中表示旋转 然后我要做的是,从一个向量开始,表示从原点指向前方的方向,并对其应用玩家当前拥有的相同旋转。现在它指向与玩家相同的方向。现在,如果你取玩家的当前点和方向向量,我们现在有一条光线描述玩家正在看的地方 我建议通过此链接了解有关四元数的更多信息。它们可能看起来很复杂,但正如我所说的,您不需要完全理解它们是如何工作的,以及为什么要使用它们。只需复制公式并学习如何使用它们。一旦你知道了如何使用它们,它们会让3d旋转变得非常简单
等等,你到底被困在哪里了?你把什么搞糊涂了?对不起,我不清楚,我现在的做法因为某种原因根本不起作用。在我看来似乎应该这样,但坐标不是它们应该是的。请具体说明。您当前的代码如何不起作用?当你测试它时,你看到了什么样的结果?你期望得到什么样的结果?我期望从原点到与视口直接对齐的点绘制一条线,该视口延伸一段距离“vd”。我得到了一条指向错误方向的线。更具体地说,当我的旋转都为0度时,直线指向错误方向(向左)约90度。当我改变y轴的旋转时,事情看起来完全不连贯。有趣。我猜lwjgl中的坐标平面肯定不同于我使用的平面,因为使x坐标使用正弦,z坐标使用余弦,问题就解决了。今天我在lwjgl坐标平面上学到了一点:D