我目前正在尝试在java中创建一个方向计算器,而且我在旋转各种对象方面遇到了一些麻烦。
假设我们有一个具有初始位置的立方体,并且每个顶点都是已知的(也是其中心)。然后使用 angley 弧度(或度,它不会)从 Y轴 上的初始位置旋转立方体没问题)和 X轴 与 anglex 弧度。为了保持简单,我会单独留下Z轴,而且,立方体的中心位于图形的原点。
考虑已知的所有顶点的坐标,并使用 v1 标记 v8 以及 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
};
答案 0 :(得分:1)
一般来说,它取决于旋转的顺序。旋转一般不会通勤,即如果您首先绕轴a旋转然后轴旋转,则反之亦然。每个旋转都可以以矩阵形式表示为顶点的线性函数。将原始坐标映射到旋转坐标的最终矩阵是各个旋转的乘积。因此,您可以计算单个旋转矩阵(只是谷歌“旋转矩阵”),计算它们的乘积,然后计算每个顶点的矩阵乘积,给出最终顶点。 通常,即通常在计算机图形等中,为了避免由旋转的顺序依赖性引起的混淆,使用四元数来表示旋转,但是这涉及更多... 希望这会有所帮助,并为您提供正确的方向:)
答案 1 :(得分:0)
使用旋转矩阵旋转单点。
http://en.wikipedia.org/wiki/Rotation_matrix
因此它最终使用矩阵乘法方程。
v' = R * v
其中v是笛卡尔坐标系中的矢量点,R是旋转矩阵,v'是新点。您必须为每个点应用此乘法。