function [out]=Rot(A,B,angle)
%Rot([1,0],[0,0],30)
%注意输入的angle的单位是度,不是弧度制
%A点绕B点逆时针旋转angle度(不是弧度制)后输出旋转后的A点
%A B点都是[x,y]的形式;
rotateMatrix = [cosd(angle), -sind(angle), 0;...
sind(angle), cosd(angle), 0;...
0 0 1];
M1 = [1, 0, B(1, 1);...
0, 1, B(1, 2);...
0, 0, 1;];
M2 = [1, 0, -B(1, 1);...
0, 1, -B(1, 2);...
0, 0, 1;];
M = M1*rotateMatrix*M2;
% 旋转后的坐标
A_new_ = M*[A, 1].';
out = A_new_(1:2).';
end
未详细测试;
REF:https://www.zhihu.com/question/464282795