p点绕原点旋转角度Q,求p1坐标;
采用极坐标的方法求解
对于p点:
x = r * cos(a);
y = r * sin(a);
对于p1点:
x1 = r * cos(a+Q)= r * [cosacosQ - sinasinQ] = xcosQ - ysinQ;
y1 = r * sin(a+Q) = r * [sinacosQ + sinQcosa] = ycosQ + xsinQ;
x1 = r * cos(a+Q)= r * [cosacosQ - sinasinQ] = xcosQ - ysinQ + x2;
y1 = r * sin(a+Q) = r * [sinacosQ + sinQcosa] = ycosQ + xsinQ + y2;
// 返回点p以点o为圆心逆时针旋转alpha(单位:弧度)后所在的位置
POINT rotate(POINT o,double alpha,POINT p)
{
POINT tp;
p.x-=o.x;
p.y-=o.y;
tp.x=p.x*cos(alpha)-p.y*sin(alpha)+o.x;
tp.y=p.y*cos(alpha)+p.x*sin(alpha)+o.y;
return tp;
}