matlab技术应用,【原创】基于Matlab绘制党旗|MATLAB 其它技术应用|MATLAB技术论坛

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%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')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值