-5

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

假设我们有一个具有初始位置的立方体,并且它的每个顶点都是已知的(以及它的中心)。然后立方体从Y 轴上的初始位置以角度弧度(或度数,没关系)旋转,并在X 轴上角度x弧度旋转。为了简单起见,我将单独保留 Z 轴,并且立方体的中心位于图形的原点。

考虑到所有已知并用v1v8标记的顶点的坐标,以及已知的anglexangley,有人可以告诉我立方体每个顶点的表达式吗?

请不要告诉我在 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
};
4

2 回答 2

1

一般来说,它取决于旋转的顺序。旋转通常不会通勤,也就是说,如果您首先围绕轴 a 旋转然后再围绕轴旋转,反之亦然。每次旋转都可以矩阵形式表示为顶点的线性函数。将原始坐标映射到旋转坐标的最终矩阵是各个旋转的乘积。所以你可以计算单个旋转矩阵(只是谷歌“旋转矩阵”),计算它们的乘积,然后计算这个矩阵与每个顶点的乘积,给你最终的顶点。通常,即通常在计算机图形等中,为了避免由于旋转的顺序依赖性而引起的混淆,使用四元数来表示旋转,但这会涉及更多...希望这对您有所帮助并为您提供正确的方向:)

于 2012-06-28T22:52:30.770 回答
0

您使用旋转矩阵旋转单点。

http://en.wikipedia.org/wiki/Rotation_matrix

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

 v' = R * v 

其中 v 是笛卡尔坐标中的向量点,R 是旋转矩阵,v' 是新点。您必须对每个点应用此乘法。

于 2012-06-28T22:58:12.560 回答