Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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_Geometry_Cube_Vertex - Fatal编程技术网

Java 如何计算旋转立方体的顶点坐标?

Java 如何计算旋转立方体的顶点坐标?,java,3d,geometry,cube,vertex,Java,3d,Geometry,Cube,Vertex,我目前正在尝试用java制作一个方向计算器,但在旋转各种对象时遇到了一些问题 假设我们有一个具有初始位置的立方体,它的每个顶点都是已知的(还有它的中心)。然后,立方体从Y轴上的初始位置以angley弧度(或度,无所谓)旋转,并在X轴上以anglex弧度旋转。为了保持简单,我将不使用Z轴,而且立方体的中心位于图形的原点 考虑到所有已知并标记有v1到v8的顶点的坐标,以及已知的anglex和angley,有人能告诉我立方体每个顶点的表达式吗 请不要告诉我Java中可能存在或不存在的帮助器方法。只要告

我目前正在尝试用java制作一个方向计算器,但在旋转各种对象时遇到了一些问题

假设我们有一个具有初始位置的立方体,它的每个顶点都是已知的(还有它的中心)。然后,立方体从Y轴上的初始位置以angley弧度(或度,无所谓)旋转,并在X轴上以anglex弧度旋转。为了保持简单,我将不使用Z轴,而且立方体的中心位于图形的原点

考虑到所有已知并标记有v1v8的顶点的坐标,以及已知的anglex和angley,有人能告诉我立方体每个顶点的表达式吗

请不要告诉我Java中可能存在或不存在的帮助器方法。只要告诉我每个点的原始表达式(如果可以节省空间,可以将它们集成到for循环中)

如果你真的需要一个初始条件的例子,考虑下面的立方体:

 float vertices[]={
1, 1, -1,  //v1 - top front right
1, -1, -1, //v2 - bottom front right
-1, -1, -1,//v3 - bottom front left
-1, 1, -1, //v4 - top front left

1, 1, 1,  //v5 - top back right
1, -1, 1, //v6 - bottom back right
-1, -1, 1,//v7 - bottom back left
-1, 1, 1 //v8 - top back left
};

一般来说,这取决于旋转的顺序。旋转通常不会相互影响,即先绕轴a旋转,然后绕轴be旋转,或者反之亦然。每个旋转都可以矩阵形式表示为顶点的线性函数。将原始坐标映射到旋转坐标的最终矩阵是各个旋转的乘积。所以你可以计算各个旋转矩阵(谷歌“旋转矩阵”),计算它们的乘积,然后计算这个矩阵与每个顶点的乘积,得到最终的顶点。 一般来说,也就是说,在计算机图形学等领域,为了避免由于旋转顺序依赖性而产生的混乱,我们使用四元数来表示旋转,但这会涉及更多。。。
希望这对您有所帮助并为您提供正确的查看方向:)

您可以使用旋转矩阵旋转单点

所以它最终使用了矩阵乘法方程

 v' = R * v 

其中,v是笛卡尔坐标系中作为向量的点,R是旋转矩阵,v'是新点。你必须对每一点应用这个乘法

如果我们给你一个旋转任意点的公式怎么样?这样你就可以把它应用到立方体的每个顶点,或者任何其他多面体上。我们告诉你买一本像样的计算机图形学书怎么样?福利和范·达姆很好。