这次留的空着实太小,标志就没咋画齐,大家如果有能力可以自己补全,这次的代码依旧使用了椭圆数据生成函数,不过不同的是这次是靠旋转矩阵构造数据点:
% 椭圆数据点生成函数
function [X,Y]=getEllipse(Mu,XR,YR,theta,pntNum)
% Mu | 中心点
% XR,YR | 旋转前X,Y半轴长度
% theta | 旋转角度
% pntNum | 生成数据点个数
tList=linspace(0,2*pi,pntNum);
X=cos(tList).*XR;
Y=sin(tList).*YR;
rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
XY=rotateMat*[X;Y]+Mu(:);
X=XY(1,:);Y=XY(2,:);
end
这次代码还用到各种旋转过后的正弦函数,因此最后的局部函数还包含一个旋转数据的局部函数。
% 数据旋转角度
function [X,Y]=rotateData(X,Y,theta)
rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
XY=rotateMat*[X;Y];
X=XY(1,:);Y=XY(2,:);
end
function xuerongrong
ax=gca;
ax.DataAspectRatio=[1 1 1];
ax.XLim=[-5 5];
ax.YLim=[-5 5];
hold(ax,'on')
% 绘制胳膊
[X,Y]=getEllipse([-1,-2.5],.4,.6,-pi/5,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
[X,Y]=getEllipse([1.7,-1.89],.4,.6,pi/3.6,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
% 绘制腿
rectangle('Position',[-.95,-4.2,1.3,1],'Curvature',.8,...
'FaceColor',[182,50,2]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
rectangle('Position',[-1,-3.9,1.4,1],'Curvature',.8,...
'FaceColor',[246,168,68]./255,'EdgeColor',[246,168,68]./255,'LineWidth',1.8)
rectangle('Position',[-1,-3.8,1.4,1],'Curvature',.8,...
'FaceColor',[212,3,28]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
rectangle('Position',[.5,-4.2,1.2,2],'Curvature',.8,...
'FaceColor',[182,50,2]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
rectangle('Position',[.45,-3.9,1.3,2],'Curvature',.8,...
'FaceColor',[246,168,68]./255,'EdgeColor',[246,168,68]./255,'LineWidth',1.8)
rectangle('Position',[.45,-3.8,1.3,2],'Curvature',.8,...
'FaceColor',[212,3,28]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
% 绘制身体
rectangle('Position',[-.9,-3.5,2.6,3],'Curvature',.6,...
'FaceColor',[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
% 绘制头
[X0,Y0]=getEllipse([-.15,.65],2.9,2.3,pi/11,200);
fill(X0,Y0,[212,3,28]./255,'EdgeColor',[153,12,40]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-.15,.65],2.7,2.3,pi/11,200);
plot(X,Y,'Color',[236,136,74]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-.15,.65],1.7,2.3,pi/11,200);
plot(X,Y,'Color',[236,136,74]./255,'LineWidth',1.8)
X=linspace(0,pi,100);Y=sin(X);
X=X.*1.4;Y=Y.*0.2;
[X,Y]=rotateData(X,Y,-pi/11);
plot(Y+.41,X-1.46,'Color',[236,136,74]./255,'LineWidth',2)
plot(X0,Y0,'Color',[212,3,28]./255,'LineWidth',3)
% 绘制脸上的云
[X,Y]=getEllipse([-1.2,-.3],.5,.6,pi/3.4,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-1.3,.4],.45,.55,-pi/3.4,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-.65,1],.45,.7,-pi/4,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([0,1],.45,.7,-pi/4,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([1.8,.5],.4,.5,pi/5,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([1.63,.92],.4,.5,pi/12,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([.3,.25],1.6,1,pi/13,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([.95,1.42],.3,.3,pi/12,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
% 绘制腮红
[X,Y]=getEllipse([-1.1,-.5],.35,.35,pi/12,200);
fill(X,Y,[212,3,28]./255,'EdgeColor','none','FaceAlpha',.2)
[X,Y]=getEllipse([-1.1,-.5],.32,.32,pi/12,200);
fill(X+3,Y+.9,[212,3,28]./255,'EdgeColor','none','FaceAlpha',.2)
% 绘制眼睛
[X,Y]=getEllipse([-.76,.16],.15,.24,pi/20,200);
fill(X,Y,[38,23,26]./255,'EdgeColor',[38,23,26]./255)
[X,Y]=getEllipse([1.25,.47],.15,.24,pi/20,200);
fill(X,Y,[38,23,26]./255,'EdgeColor',[38,23,26]./255)
[X,Y]=getEllipse([-.81,.21],.05,.05,pi/20,200);
fill(X,Y,[230,230,230]./255,'EdgeColor','none')
[X,Y]=getEllipse([1.2,.52],.05,.05,pi/20,200);
fill(X,Y,[230,230,230]./255,'EdgeColor','none')
% % 绘制头饰
[X,Y]=getEllipse([-1.85,2.2],.48,.15,pi/20,200);
fill(X,Y,[236,136,74]./255,'EdgeColor',[236,136,74]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-.7,2.4],.47,.2,pi/15,200);
fill(X,Y,[236,136,74]./255,'EdgeColor',[236,136,74]./255,'LineWidth',1.8)
[X,Y]=getEllipse([.32,2.55],.47,.15,pi/15,200);
fill(X,Y,[236,136,74]./255,'EdgeColor',[236,136,74]./255,'LineWidth',1.8)
[X,Y]=getEllipse([1.2,2.6],.25,.14,pi/30,200);
fill(X,Y,[236,136,74]./255,'EdgeColor',[236,136,74]./255,'LineWidth',1.8)
%
[X,Y]=getEllipse([-1.8,2.1],.08,.2,-pi/10,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-.7,2.3],.08,.2,-pi/40,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
[X,Y]=getEllipse([.4,2.5],.08,.2,-pi/40,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
[X,Y]=getEllipse([1.25,2.5],.04,.12,pi/10,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
% 绘制金色云纹
[X,Y]=getEllipse([-.3,3.6],.3,.35,pi/10-pi/5,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[246,168,68]./255,'LineWidth',2)
[X,Y]=getEllipse([-1,3.4],.3,.35,pi/10+pi/5,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[246,168,68]./255,'LineWidth',2)
[X,Y]=getEllipse([-.7,3.6],.35,.4,pi/10,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[246,168,68]./255,'LineWidth',2)
X=linspace(0+pi/10,pi-pi/10,200);
Y=sin(X);
X=X.*.4;Y=Y.*.3;
[X,Y]=rotateData(X,Y,pi/10);
plot(X-1.3,Y+3.2,'Color',[250,250,250]./255,'LineWidth',7)
% 绘制小帽子
[X,Y]=getEllipse([0,0],1,.9,pi/12,200);Y=Y-.3;
Y(Y<=0)=Y(Y<=0).*.2;
[X,Y]=rotateData(X,Y,pi/14);
fill(X-.4,Y+2.8,[212,3,28]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
% 绘制头上的雪
X1=linspace(-2*pi/3,(5+2/3)*pi,200);
Y1=sin(X1);
X2=linspace(0,pi,200);
Y2=sin(X2);
X1=X1.*.22;Y1=Y1.*.1;
[X1,Y1]=rotateData(X1,Y1,pi/20);
X1=X1-1.9;Y1=Y1+2.2;
X2=X2.*1.3;Y2=Y2.*.58;
[X2,Y2]=rotateData(X2,Y2,pi/16);
X2=X2-2.4;Y2=Y2+2.1;
fill([X1,X2(end:-1:1)],[Y1,Y2(end:-1:1)],[250,250,250]./255,...
'EdgeColor',[240,240,240]./255,'LineWidth',2.5)
% 绘制肚子
[X,Y]=getEllipse([.6,-2.5],.8,.65,pi/12,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[230,230,230]./255,'LineWidth',1.8)
% 绘制围巾
X=[-.35,-.39];
Y=[-1.8,-2.5];
plot(X,Y-.05,'Color',[246,168,68]./400,'LineWidth',9)
plot(X,Y,'Color',[246,168,68]./255,'LineWidth',8)
X=linspace(0,pi,100);Y=sin(X);
X=X.*.9;Y=-Y.*.2;
[X,Y]=rotateData(X,Y,pi/14);
plot(X.*1.05-1.05,Y-1.8,'Color',[246,168,68]./400,'LineWidth',9)
plot(X-.99,Y-1.8,'Color',[246,168,68]./255,'LineWidth',8)
% 文本
text(.6,-2.5,'BEIJING 2022','HorizontalAlignment','center','Color',[.2,.2,.2],...
'FontSize',4.5,'FontName','Comic Sans MS','Rotation',15,'FontWeight','bold')
% 标志
X=linspace(0,5*pi/6,100);Y=-sin(X);
X=X.*.13;Y=Y.*.13;
[X,Y]=rotateData(X,Y,-2*pi/3);
plot(X+.6,Y-2.7,'Color',[212,62,80]./400,'LineWidth',1.5)
[X,Y]=rotateData(X,Y,pi/4);
plot(X+.65,Y-2.75,'Color',[51,119,180]./400,'LineWidth',1.5)
[X,Y]=rotateData(X,Y,pi/4);
plot(X+.7,Y-2.8,'Color',[174,222,93]./400,'LineWidth',1.5)
% =========================================================================
% 椭圆数据点生成函数
function [X,Y]=getEllipse(Mu,XR,YR,theta,pntNum)
% Mu | 中心点
% XR,YR | 旋转前X,Y半轴长度
% theta | 旋转角度
% pntNum | 生成数据点个数
tList=linspace(0,2*pi,pntNum);
X=cos(tList).*XR;
Y=sin(tList).*YR;
rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
XY=rotateMat*[X;Y]+Mu(:);
X=XY(1,:);Y=XY(2,:);
end
% 数据旋转角度
function [X,Y]=rotateData(X,Y,theta)
rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
XY=rotateMat*[X;Y];
X=XY(1,:);Y=XY(2,:);
end
end
function xuerongronggif
ax=gca;
ax.DataAspectRatio=[1 1 1];
ax.XLim=[-5 5];
ax.YLim=[-5 5];
hold(ax,'on')
% 绘制胳膊
[X,Y]=getEllipse([-1,-2.5],.4,.6,-pi/5,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
[X,Y]=getEllipse([1.7,-1.89],.4,.6,pi/3.6,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
pause(.5)
% 绘制腿
rectangle('Position',[-.95,-4.2,1.3,1],'Curvature',.8,...
'FaceColor',[182,50,2]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
rectangle('Position',[-1,-3.9,1.4,1],'Curvature',.8,...
'FaceColor',[246,168,68]./255,'EdgeColor',[246,168,68]./255,'LineWidth',1.8)
rectangle('Position',[-1,-3.8,1.4,1],'Curvature',.8,...
'FaceColor',[212,3,28]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
rectangle('Position',[.5,-4.2,1.2,1],'Curvature',.8,...
'FaceColor',[182,50,2]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
rectangle('Position',[.45,-3.9,1.3,1],'Curvature',.8,...
'FaceColor',[246,168,68]./255,'EdgeColor',[246,168,68]./255,'LineWidth',1.8)
rectangle('Position',[.45,-3.8,1.3,1],'Curvature',.8,...
'FaceColor',[212,3,28]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
pause(.5)
% 绘制身体
rectangle('Position',[-.9,-3.5,2.6,3],'Curvature',.6,...
'FaceColor',[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
pause(.5)
% 绘制头
[X0,Y0]=getEllipse([-.15,.65],2.9,2.3,pi/11,200);
fill(X0,Y0,[212,3,28]./255,'EdgeColor',[153,12,40]./255,'LineWidth',1.8)
pause(.5)
[X,Y]=getEllipse([-.15,.65],2.7,2.3,pi/11,200);
plot(X,Y,'Color',[236,136,74]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-.15,.65],1.7,2.3,pi/11,200);
plot(X,Y,'Color',[236,136,74]./255,'LineWidth',1.8)
X=linspace(0,pi,100);Y=sin(X);
X=X.*1.4;Y=Y.*0.2;
[X,Y]=rotateData(X,Y,-pi/11);
plot(Y+.41,X-1.46,'Color',[236,136,74]./255,'LineWidth',2)
plot(X0,Y0,'Color',[212,3,28]./255,'LineWidth',3)
pause(.5)
% 绘制脸上的云
[X,Y]=getEllipse([-1.2,-.3],.5,.6,pi/3.4,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-1.3,.4],.45,.55,-pi/3.4,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-.65,1],.45,.7,-pi/4,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([0,1],.45,.7,-pi/4,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([1.8,.5],.4,.5,pi/5,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([1.63,.92],.4,.5,pi/12,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([.3,.25],1.6,1,pi/13,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[250,250,250]./255,'LineWidth',1.8)
[X,Y]=getEllipse([.95,1.42],.3,.3,pi/12,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
pause(.5)
% 绘制腮红
[X,Y]=getEllipse([-1.1,-.5],.35,.35,pi/12,200);
fill(X,Y,[212,3,28]./255,'EdgeColor','none','FaceAlpha',.2)
[X,Y]=getEllipse([-1.1,-.5],.32,.32,pi/12,200);
fill(X+3,Y+.9,[212,3,28]./255,'EdgeColor','none','FaceAlpha',.2)
pause(.5)
% 绘制眼睛
[X,Y]=getEllipse([-.76,.16],.15,.24,pi/20,200);
fill(X,Y,[38,23,26]./255,'EdgeColor',[38,23,26]./255)
[X,Y]=getEllipse([1.25,.47],.15,.24,pi/20,200);
fill(X,Y,[38,23,26]./255,'EdgeColor',[38,23,26]./255)
[X,Y]=getEllipse([-.81,.21],.05,.05,pi/20,200);
fill(X,Y,[230,230,230]./255,'EdgeColor','none')
[X,Y]=getEllipse([1.2,.52],.05,.05,pi/20,200);
fill(X,Y,[230,230,230]./255,'EdgeColor','none')
pause(.5)
% 绘制头饰
[X,Y]=getEllipse([-1.85,2.2],.48,.15,pi/20,200);
fill(X,Y,[236,136,74]./255,'EdgeColor',[236,136,74]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-.7,2.4],.47,.2,pi/15,200);
fill(X,Y,[236,136,74]./255,'EdgeColor',[236,136,74]./255,'LineWidth',1.8)
[X,Y]=getEllipse([.32,2.55],.47,.15,pi/15,200);
fill(X,Y,[236,136,74]./255,'EdgeColor',[236,136,74]./255,'LineWidth',1.8)
[X,Y]=getEllipse([1.2,2.6],.25,.14,pi/30,200);
fill(X,Y,[236,136,74]./255,'EdgeColor',[236,136,74]./255,'LineWidth',1.8)
%
[X,Y]=getEllipse([-1.8,2.1],.08,.2,-pi/10,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
[X,Y]=getEllipse([-.7,2.3],.08,.2,-pi/40,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
[X,Y]=getEllipse([.4,2.5],.08,.2,-pi/40,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
[X,Y]=getEllipse([1.25,2.5],.04,.12,pi/10,200);
fill(X,Y,[212,3,28]./255,'EdgeColor',[212,3,28]./255,'LineWidth',1.8)
pause(.5)
% 绘制金色云纹
[X,Y]=getEllipse([-.3,3.6],.3,.35,pi/10-pi/5,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[246,168,68]./255,'LineWidth',2)
[X,Y]=getEllipse([-1,3.4],.3,.35,pi/10+pi/5,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[246,168,68]./255,'LineWidth',2)
[X,Y]=getEllipse([-.7,3.6],.35,.4,pi/10,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[246,168,68]./255,'LineWidth',2)
X=linspace(0+pi/10,pi-pi/10,200);
Y=sin(X);
X=X.*.4;Y=Y.*.3;
[X,Y]=rotateData(X,Y,pi/10);
plot(X-1.3,Y+3.2,'Color',[250,250,250]./255,'LineWidth',7)
pause(.5)
% 绘制小帽子
[X,Y]=getEllipse([0,0],1,.9,pi/12,200);Y=Y-.3;
Y(Y<=0)=Y(Y<=0).*.2;
[X,Y]=rotateData(X,Y,pi/14);
fill(X-.4,Y+2.8,[212,3,28]./255,'EdgeColor',[182,50,2]./255,'LineWidth',1.8)
pause(.5)
% 绘制头上的雪
X1=linspace(-2*pi/3,(5+2/3)*pi,200);
Y1=sin(X1);
X2=linspace(0,pi,200);
Y2=sin(X2);
X1=X1.*.22;Y1=Y1.*.1;
[X1,Y1]=rotateData(X1,Y1,pi/20);
X1=X1-1.9;Y1=Y1+2.2;
X2=X2.*1.3;Y2=Y2.*.58;
[X2,Y2]=rotateData(X2,Y2,pi/16);
X2=X2-2.4;Y2=Y2+2.1;
fill([X1,X2(end:-1:1)],[Y1,Y2(end:-1:1)],[250,250,250]./255,...
'EdgeColor',[240,240,240]./255,'LineWidth',2.5)
pause(.5)
% 绘制肚子
[X,Y]=getEllipse([.6,-2.5],.8,.65,pi/12,200);
fill(X,Y,[250,250,250]./255,'EdgeColor',[230,230,230]./255,'LineWidth',1.8)
pause(.5)
% 绘制围巾
X=[-.35,-.39];
Y=[-1.8,-2.5];
plot(X,Y-.05,'Color',[246,168,68]./400,'LineWidth',9)
plot(X,Y,'Color',[246,168,68]./255,'LineWidth',8)
X=linspace(0,pi,100);Y=sin(X);
X=X.*.9;Y=-Y.*.2;
[X,Y]=rotateData(X,Y,pi/14);
plot(X.*1.05-1.05,Y-1.8,'Color',[246,168,68]./400,'LineWidth',9)
plot(X-.99,Y-1.8,'Color',[246,168,68]./255,'LineWidth',8)
pause(.5)
% 文本
text(.6,-2.5,'BEIJING 2022','HorizontalAlignment','center','Color',[.2,.2,.2],...
'FontSize',4.5,'FontName','Comic Sans MS','Rotation',15,'FontWeight','bold')
pause(.5)
% 标志
X=linspace(0,5*pi/6,100);Y=-sin(X);
X=X.*.13;Y=Y.*.13;
[X,Y]=rotateData(X,Y,-2*pi/3);
plot(X+.6,Y-2.7,'Color',[212,62,80]./400,'LineWidth',1.5)
[X,Y]=rotateData(X,Y,pi/4);
plot(X+.65,Y-2.75,'Color',[51,119,180]./400,'LineWidth',1.5)
[X,Y]=rotateData(X,Y,pi/4);
plot(X+.7,Y-2.8,'Color',[174,222,93]./400,'LineWidth',1.5)
pause(.5)
% =========================================================================
% 椭圆数据点生成函数
function [X,Y]=getEllipse(Mu,XR,YR,theta,pntNum)
% Mu | 中心点
% XR,YR | 旋转前X,Y半轴长度
% theta | 旋转角度
% pntNum | 生成数据点个数
tList=linspace(0,2*pi,pntNum);
X=cos(tList).*XR;
Y=sin(tList).*YR;
rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
XY=rotateMat*[X;Y]+Mu(:);
X=XY(1,:);Y=XY(2,:);
end
% 数据旋转角度
function [X,Y]=rotateData(X,Y,theta)
rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
XY=rotateMat*[X;Y];
X=XY(1,:);Y=XY(2,:);
end
end