读书人

懂电脑几何学的进来 求几何图形旋转算

发布时间: 2012-09-14 23:00:49 作者: rapoo

懂计算机几何学的进来 求几何图形旋转算法
现已知两个点: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
上面三个矩阵……

读书人网 >C#

热点推荐