日期:2014-05-17  浏览次数:20860 次

懂计算机几何学的进来 求几何图形旋转算法
现已知两个点: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;
------解决方案--------------------
探讨

说明一下三楼矩阵的推演过程
第一个矩阵,先将坐标点平移为以原点为圆心的坐标
1 0
0 1
-X0 -Y0
第二个矩阵,新坐标绕原点旋转r弧度
Cos(r) Sin(r)
-Sin(r) Cos(r)
0 0
第三个矩阵,将旋转后的坐标再平移回真正的圆心所在的圆上
1 0
0 1
X0 Y0
上面三个矩阵……