%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author : wacs5
%Email : wacs5@126.com
%Date : 20100411
%Function : Matlab画党旗
%See also : http://www.matlabsky.com/thread-6345-1-1.html
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;close all
width=288; height=192;
xx=linspace(0,width/2,19);
yy=linspace(height/2,height,13);
x0=xx(5); x1=xx(13);
y0=yy(2); y1=yy(10);
x=linspace(x0,x1,33);
y=linspace(y1,y0,33); %朝下为正
figure; hold on;
set(gca,'color','r','xtick',[],'ytick',[])
axis equal
axis([0,width,0,height]);
xA=x(1); yA=y(1);
xB=x(1); yB=y(33);
xC=x(33); yC=y(33);
xD=x(33); yD=y(1);
xE=x(29); yE=y(33);
xF=x(33); yF=y(29);
xG=(x(8)+x(9))/2; yG=(y(18)+y(19))/2;
xH=(x(19)+x(20))/2; yH=(y(7)+y(8))/2;
xI=x(4); yI=y(14);
xJ=x(17); yJ=y(5);
xK=(x(13)+x(14))/2; yK=y(1);
xM=x(17); yM=y(17);
xN=x(17); yN=y(1);
xO=x(17); yO=y(33);
xP=x(17); yP=y(15);
xR=x(11); yR=(y(16)+y(17))/2;
xT=(x(16)+x(17))/2; yT=(y(16)+y(17))/2;
xV=(x(16)+x(17))/2; yV=y(11);
xX=(x(3)+x(4))/2; yX=(y(30)+y(31))/2;
xY=x(6); yY=y(30);
xZ=x(4); yZ=y(28);
xEEEE=(x(11)+x(12))/2; yEEEE=(y(15)+y(16))/2;
xFFFF=(x(15)+x(16))/2; yFFFF=(y(11)+y(12))/2;
xL=x(1)+((61-sqrt(177))/4-1)*(x(33)-x(1))/32;
yL=y(1)+(18-(61-sqrt(177))/4-1)*(y(33)-y(1))/32;
r_K_J_L=norm([xJ-xK,yJ-yK]);
theta_K_J_L=linspace(atan2(yJ-yK,xJ-xK),atan2(yL-yK,xL-xK),20);
x_K_J_L=xK+r_K_J_L*cos(theta_K_J_L);
y_K_J_L=yK+r_K_J_L*sin(theta_K_J_L);
% 以M点(17、17')为圆心,MN(N点为17、1')为半径画弧NO(O点为17、33');
r_M_N_O=norm([xN-xM,yN-yM]);
xFF=x(1)+(19+sqrt(124)-1)*(x(33)-x(1))/32;
yFF=y(1)+(19+sqrt(124)-1-4)*(y(33)-y(1))/32;
theta_M_FF_N=linspace(atan2(yFF-yM,xFF-xM),atan2(yN-yM,xN-xM),100);
x_M_FF_N=xM+r_M_N_O*cos(theta_M_FF_N); y_M_FF_N=yM+r_M_N_O*sin(theta_M_FF_N);
xEE=x(1)+(15+sqrt(124)-1)*(x(33)-x(1))/32;
yEE=y(1)+(15+sqrt(124)-1+4)*(y(33)-y(1))/32;
theta_M_O_EE=linspace(atan2(yO-yM,xO-xM),atan2(yEE-yM,xEE-xM),100);
x_M_O_EE=xM+r_M_N_O*cos(theta_M_O_EE); y_M_O_EE=yM+r_M_N_O*sin(theta_M_O_EE);
% 以R点(11 16'、17'中点)为圆心、RN为半径画弧,与通过R点的水平线交于S点;
r_R_N_S=norm([xR-xN,yR-yN]);
xS=xR+r_R_N_S; yS=yR;
theta_R_N_S=linspace(atan2(yN-yR,xN-xR),atan2(yS-yR,xS-xR),80);
x_R_N_S=xR+r_R_N_S*cos(theta_R_N_S); y_R_N_S=yR+r_R_N_S*sin(theta_R_N_S);
% 以T点(16、17 16'、17'的中点)为圆心、TS为半径画弧,与通过T点的垂直线交于U点;
r_T_S_U=norm([xS-xT,yS-yT]);
xU=xT; yU=yT-r_T_S_U;
xFFF=x(1)+((74+sqrt(74^2-8*(386+11*sqrt(276.25))))/4-1)*(x(33)-x(1))/32;
yFFF=y(1)+((74+sqrt(74^2-8*(386+11*sqrt(276.25))))/4-1-4)*(y(33)-y(1))/32;
theta_T_S_FFF=linspace(atan2(yS-yT,xS-xT),atan2(yFFF-yT,xFFF-xT),80);
x_T_S_FFF=xT+r_T_S_U*cos(theta_T_S_FFF); y_T_S_FFF=yT+r_T_S_U*sin(theta_T_S_FFF);
xEEE=x(1)+((58+sqrt(58^2-8*(122+11*sqrt(276.25))))/4-1)*(x(33)-x(1))/32;
yEEE=y(1)+((58+sqrt(58^2-8*(122+11*sqrt(276.25))))/4-1+4)*(y(33)-y(1))/32;
theta_T_S_EEE=linspace(atan2(yEEE-yT,xEEE-xT),atan2(yU-yT,xU-xT),80);
x_T_S_EEE=xT+r_T_S_U*cos(theta_T_S_EEE); y_T_S_EEE=yT+r_T_S_U*sin(theta_T_S_EEE);
% 以V点(16、17 11'中点)为圆心、VU为半径画弧,与HG的延长线交于W,构成镰刀。
r_V_U_W=norm([xV-xU,yV-yU]);
xW=x(1)+((65-sqrt(2209))/4-1)*(x(33)-x(1))/32;
yW=y(1)+(27-(65-sqrt(2209))/4-1)*(y(33)-y(1))/32;
theta_V_U_W=linspace(atan2(yU-yV,xU-xV),atan2(yW-yV,xW-xV),60);
x_V_U_W=xV+r_V_U_W*cos(theta_V_U_W); y_V_U_W=yV+r_V_U_W*sin(theta_V_U_W);
% 以P点(17、15')为圆心、PO为半径画弧,与HG的延长线交于Q点;
xQ=x(1)+((58-sqrt(2492))/4-1)*(x(33)-x(1))/32;
yQ=y(1)+(27-(58-sqrt(2492))/4-1)*(y(33)-y(1))/32;
xZZ=x(1)+(17-9*sqrt(2)-1)*(x(33)-x(1))/32;
yZZ=y(1)+(32-(17-9*sqrt(2))-1)*(y(33)-y(1))/32;
xYY=x(1)+(19-sqrt(158)-1)*(x(33)-x(1))/32;
yYY=y(1)+(36-(19-sqrt(158))-1)*(y(33)-y(1))/32;
r_P_Q_O=norm([xP-xO,yP-yO]);
theta_P_Q_ZZ=linspace(atan2(yQ-yP,xQ-xP),atan2(yZZ-yP,xZZ-xP),60);
x_P_Q_ZZ=xP+r_P_Q_O*cos(theta_P_Q_ZZ); y_P_Q_ZZ=yP+r_P_Q_O*sin(theta_P_Q_ZZ);
theta_P_YY_O=linspace(atan2(yYY-yP,xYY-xP),atan2(yO-yP,xO-xP),60);
x_P_YY_O=xP+r_P_Q_O*cos(theta_P_YY_O); y_P_YY_O=yP+r_P_Q_O*sin(theta_P_YY_O);
% 以X点(3、4 30'、31'的中点)为圆心作圆与AB、AC线相切,
r_X_ZZZ_YYY=xX-x(1);
xYYY=x(1)+((18+sqrt(34))/4-1)*(x(33)-x(1))/32;
yYYY=y(1)+(36-(18+sqrt(34))/4-1)*(y(33)-y(1))/32;
xZZZ=x(1)+((10+sqrt(34))/4-1)*(x(33)-x(1))/32;
yZZZ=y(1)+(32-(10+sqrt(34))/4-1)*(y(33)-y(1))/32;
theta_X_ZZZ_YYY=linspace(atan2(yZZZ-yX,xZZZ-xX),2*pi+atan2(yYYY-yX,xYYY-xX),100);
x_X_ZZZ_YYY=xX+r_X_ZZZ_YYY*cos(theta_X_ZZZ_YYY); y_X_ZZZ_YYY=yX+r_X_ZZZ_YYY*sin(theta_X_ZZZ_YYY);
fill([xE,xF,x_M_FF_N,x_R_N_S,x_T_S_FFF,xFFFF,xH,x_K_J_L,xI,xG,xEEEE,x_T_S_EEE,x_V_U_W,x_P_Q_ZZ,x_X_ZZZ_YYY,x_P_YY_O,x_M_O_EE,xE],[yE,yF,y_M_FF_N,y_R_N_S,y_T_S_FFF,yFFFF,yH,y_K_J_L,yI,yG,yEEEE,y_T_S_EEE,y_V_U_W,y_P_Q_ZZ,y_X_ZZZ_YYY,y_P_YY_O,y_M_O_EE,yE],'y')