【问题标题】:Find angle of rotation of cube找到立方体的旋转角度
【发布时间】:2015-01-17 17:50:53
【问题描述】:

我有一组点(X、Y、Z 顶点),可以从 MATLAB 中的 STL 文件中读取。 它们是构成立方体的点。

我想知道这个立方体可能随 X/Y/Z 轴旋转的角度。

谁能提供任何线索如何做到这一点?

谢谢

【问题讨论】:

  • 这是一个很好的问题,但更多的是数学而不是编程。
  • 我猜minmax 在不同维度上可以检测到立方体的一些“角”。然后从中算出“边线”,最后得到这些线与正常的X,Y,Z引用的角度......只是一个猜测,可能有一个更直接的解决方案。

标签: matlab math rotation geometry image-rotation


【解决方案1】:

要了解立方体是如何相对于 X/Y/Z 轴旋转的,首先应该为立方体构建局部坐标系,假设您知道立方体的所有 8 个角点,可以通过以下步骤轻松完成立方体以及它们如何相互连接以形成立方体。

1) 从 8 个点中选择任意一个点,记为 P0。

2) 应该有 3 个其他点连接到 P0。将这 3 个点表示为 P1、P2 和 P3。

3) 创建从 P0 到 P1、P2 和 P3 的向量并将这 3 个向量合并。这 3 个单位向量,分别表示为 v1、v2 和 v3,应该相互正交,可以用作立方体的局部坐标系。您可以将 v1、v2 和 v3 指定为局部坐标系的 x、y 和 z 轴,但您需要确保它们遵循右手规则。

4) 现在,您有了局部坐标系,您可以轻松计算相对于原始坐标系的角度。

【讨论】:

    【解决方案2】:

    首先您需要为立方体指定一个坐标系。您可以通过在立方体上选择一个点并在与其连接的三个边中的每一个上绘制一个轴来完成此操作(这些边将指向三个最近点的方向)。立方体与 XYZ 轴对齐的方法不止一种,因此点的选择是任意的。您可以找到离原点最近的点,或者随机选择一个。

    所以现在您有了 XYZ 坐标系(由形成矩阵 A 的三个列向量给出)和立方体坐标系(由矩阵 C 给出)。如果您想要连接到两者的矩阵变换T,您可以求解矩阵方程C = T*A。因为A 只是单位矩阵,所以我们有T = C。如果您想要实际角度,您可以使用相同的矩阵反演过程将轴与rotation matrices 一对一对齐。

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2018-06-27
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多