懂计算机几何学的进来 求几何图形旋转算法
现已知两个点:P0(x0,y0)和P1(x1,y1),还有一个角度r(单位为degree),求p1绕p0旋转r度后的坐标x2,y2
可以用三角函数(单位:radians),但不能用反三角函数(像sin^-1)
求高人帮助
------解决方案--------------------圆心为(0,0),假设点P0(x0,y0)旋转角度B之后到了点P1(x1,y1)。
注:按照惯例,逆时针旋转角度为正值,顺时针则为负值。
那么,现在根据坐标点,就有以下的4个方程式:
1.
x0=R*cosA;
2.
y0=R*sinA;
3.
x1=R*cos(A+B);
4.
y1=R*sin(A+B);
根据和差化积公式有:
1.
sin(a+b)=sin(a)*cos(b)+cos(a)*sin(b);
2.
sin(a-b)=sin(a)*cos(b)-cos(a)*sin(b);
3.
cos(a+b)=cos(a)*cos(b)-sin(a)*sin(b);
4.
cos(a-b)=cos(a)*cos(b)+sin(a)*sin(b);
那么方程式3和4就成了:
x0=R*(cosA*cosB-sinA*sinB);
y0=R*(sinA*cosB+cosA*sinB);
OK,现在根据4个方程式就可以解出:
x1 = x0 * cosB - y0 * sinB;
y1 = y0 * cosB + x0 * sinB;
------解决方案--------------------