带中心的旋转矩阵

时间:2012-02-22 05:16:40

标签: math vector matrix

如何在此示例或任何示例中计算中心向量。 WolframAlpha:http://www.wolframalpha.com/input/?i=rotate+90+degrees+center+%283%2C0%29

2 个答案:

答案 0 :(得分:11)

同质坐标:

            [ cos(theta) -sin(theta) 0 ]
Rotate    = [ sin(theta)  cos(theta) 0 ]
            [      0           0     1 ]

            [ 1 0 x ]
Translate = [ 0 1 y ]
            [ 0 0 1 ]

因此,为了执行转换,您将乘以Translate(x, y) * Rotate(theta) * Translate(-x, -y)并获得转换矩阵。

答案 1 :(得分:1)

或在一个功能声明中

Vector RotateAbout(Vector node, Vector center, double angle)
{
    return new Vector(
        center.X + (node.X-center.X)*COS(angle) - (node.Y-center.Y)*SIN(angle),
        center.Y + (node.X-center.X)*SIN(angle) + (node.Y-center.Y)*COS(angle)
    };
}