如何在此示例或任何示例中计算中心向量。 WolframAlpha:http://www.wolframalpha.com/input/?i=rotate+90+degrees+center+%283%2C0%29
答案 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)
};
}