1

我正在使用 WPF 的 MatrixTransform 来管理我在 Canvas(全 2D)上的平移、缩放和旋转。它运作良好。但是,我希望能够计算当前的旋转角度。这是怎么做到的?我需要反转矩阵然后用它来旋转一些东西吗?如有必要,我可以提供“旋转”点。

4

1 回答 1

1

假设:

  1. 该矩阵绝对是平移/旋转/缩放矩阵(无偏斜或其他非正交性)。
  2. 该矩阵被指定为首先应用缩放,然后是旋转,然后是平移。

脚步:

  1. 您可以忽略最终的平移组件,为您提供包含缩放和旋转的左上角 3x3 矩阵。

  2. 缩放只是乘以缩放因子的对角矩阵(缩放矩阵中的每一列),因此您可以对列向量进行归一化,从而为您提供一个纯粹表达旋转的正交矩阵。

  3. 要获得旋转角度,您需要选择旋转轴或要旋转的矢量(您可以从中计算旋转轴和角度。)

后一种情况更容易:

  1. 取一个大小为 1 的样本向量 v(简化数学。)
  2. 通过旋转矩阵变换得到v'。
  3. 对于旋转轴 (vx v'),它们之间的角度定义为 acos(v * v')。'x' 是叉积,'*' 是点积。
于 2012-10-10T18:40:37.063 回答