Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算三维空间中的点_Java_3d_Floating Point_Trigonometry_Lwjgl - Fatal编程技术网

Java 计算三维空间中的点

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轴的旋转不断变化,但观察距离保持不变。如果任何人对此有任何建议、方法或需要澄清,

我试图定位三维空间中相对于原点(0,0,0)的点。我有3个值来计算这个点:围绕x轴和y轴的旋转角度,以及“视距”。使用这些值,如何在三维空间中相对于原点定位点?我尝试过使用基本的三角函数,但结果似乎是随机的。下图显示了需要执行的操作

  • “vd”表示“视距”
  • “c”是价值持有人
  • “(x,y,z)”是我试图找到的坐标
我想做的是找到一个玩家在一定距离外看的点(在玩家的视线中找到一个点,距离一定)。请记住,围绕x轴和y轴的旋转不断变化,但观察距离保持不变。如果任何人对此有任何建议、方法或需要澄清,请在下面进行评论/回答

我在LWJGL中这样做,我使用的代码如下:

    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