【问题标题】:Rotation around an arbitrary point using transformation matrix [closed]使用变换矩阵围绕任意点旋转[关闭]
【发布时间】:2013-12-23 13:52:19
【问题描述】:

我想使用变换矩阵围绕任意点旋转点。

所以方程是:

p'x = cos(theta) * (px-ox) - sin(theta) * (py-oy) + ox
p'y = sin(theta) * (px-ox) + cos(theta) * (py-oy) + oy

但我想用矩阵变换的形式重写,好像应该是(c=cos(theta),s=sin(theta)):

默认情况下,旋转矩阵使用原点作为旋转中心。要绕任意点旋转,您必须使用平移矩阵减去到原点的距离,进行旋转,然后再平移回来。

如果我理解正确,我们首先从原始点减去 ot (0,0),然后围绕点 (0,0) 旋转,然后添加到结果点,但我认为必须交换第一个和第三个矩阵?

【问题讨论】:

  • 这个问题似乎是题外话,因为它纯粹是关于Mathematics
  • @Dukeling 我认为它与计算机图形有关。
  • “我认为第一个和第三个矩阵必须交换”。我想你可能是对的。找出答案的最快方法可能是通过实验:尝试不交换,然后尝试交换,看看哪个看起来正确。
  • @Kevin 我试过了(我用手将它们相乘)但我从理论上不明白它为什么有效。(我不明白为什么不应该交换矩阵)
  • 一旦你弄清楚了数学并尝试编写代码,那么它就变成了一个编程问题。目前我看到的都是数学。

标签: algorithm graphics matrix computer-vision linear-algebra


【解决方案1】:

你不应该交换你的第一个和第三个矩阵,因为你正在右乘作为列向量的点,所以序列不是从左到右,而是从右到左。

您可以通过扩展右手矩阵轻松验证结果,这将是表示 p'x 和 p'y 的方程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    相关资源
    最近更新 更多