直角坐标系下一点 (x0,y0) 绕某一点 (x,y) 逆时针旋转角度 θ 后的坐标 (x1,y1) 的坐标计算公式为
x1=(x0−x)cos(θ)−(y0−y)sin(θ)+x
y1=(x0−x)sin(θ)+(y0−y)cos(θ)+y
这里举一个小例子,蓝色箭头表示原始位置,红色箭头表示顺时针旋转2.259弧度后的结果。
这里列出箭头躯干旋转的一段Matlab代码作为例子,
figure(1);
axis equal;
x1=0.0; y1=0.0; x2=1.0; y2=0.0;
line([x1 x2],[y1 y2],'linewidth',2);
s = sin(keypoint(4));
c = cos(keypoint(4));
nx1=- s * y1 + c * x1;
ny1=c * y1 + s * x1;
nx2=- s * y2 + c * x2;
ny2=c * y2 + s * x2;
line([nx1 nx2],[ny1 ny2],'linewidth',2,'Color','r');