给定MatrixTransform如何确定其当前角度?

时间:2012-10-10 18:26:37

标签: c# wpf transform

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

1 个答案:

答案 0 :(得分:1)

假设:

  1. 矩阵绝对是平移/旋转/比例矩阵(没有倾斜或其他非正交性)。
  2. 指定矩阵,首先应用比例,然后旋转,然后进行平移。
  3. 步骤:

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

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

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

    4. 后一种情况更容易:

      1. 获取幅度为1的样本矢量v(简化数学运算)。
      2. 通过旋转矩阵进行变换以获得v'。
      3. 对于旋转轴(v x v'),它们之间的角度定义为acos(v * v')。 'x'是叉积,'*'是点积。