【问题标题】:How can I find out the vertex coordinates of a rotating cube?如何找出旋转立方体的顶点坐标?
【发布时间】:2012-06-28 22:42:24
【问题描述】:

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

假设我们有一个具有初始位置的立方体,并且它的每个顶点都是已知的(以及它的中心)。然后立方体从 Y 轴 上的初始位置旋转 angley 弧度(或度数,它不会't matter) 并且在 X 轴 上,弧度为 anglex。为了简单起见,我将不考虑 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
};

【问题讨论】:

  • 如果我们给你一个可以旋转任意点的公式怎么样?这样您就可以将其应用于立方体的每个顶点或任何其他多面体。
  • 我们只是告诉你买一本像样的计算机绘图书怎么样? Foley 和 van Dam 不错。

标签: java 3d geometry cube vertex


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

     v' = R * v 
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      相关资源
      最近更新 更多