首页 > 分享 > MATLAB绘制玫瑰花的程序

MATLAB绘制玫瑰花的程序

之前看过在一本书上看见有人用C语言画玫瑰花,于是我把它变成Matlab,把代码发在校内上,但是很少有人看,今天发在这里,程序不是很通用,因为当时急于看到花的样子!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147

function plot_rose
draw_main(450,90);
function draw_main(x,y)
%粉红色玫瑰
arcdata{1}=[65 -60 150 350 8
    66 -54 300 470 8
    65 -56 30 230 10
    64 -57 300 490 17];
ellipsedata{1}=[73 -30 250 450 27 40
    59 -30 100 290 27 40
    65  -40 140 270 20 30];
arcdata{2}=[0 0 150 350 12
    1 8 280 470 12
    0 2 30 230 16
    0 3 80 240 28
    2 8 180 330 22
    -2 2 310 460 25];
ellipsedata{2}=[-12 30 120 300 30 40
    10 28 250 423 30 42
    -4  10 290 393 30 40];
ellipsedata{3}=[120 5 0 360 15 25];
ellipsedata{4}=[-70 10 0 360 14 20];
rose_e{2}=[x+16 y+32 235 355 26 35
    x-15 y+32 190 310 30 35
    x+0 y+35 190 350 43 50];
rose_e{1}=[x+80 y-48 220 350 22 50
    x+50 y-48 190 320 22 50
    x+65 y-28 180 360 36 50];
rose_e{3}=[x+120 y-6 200 340 17 25
    x+120 y+7 160 380 17 27];
rose_e{4}=[x-70 y+15 140 390 17 20
    x-75 y-10 205 340 10 30
    x-60 y-10 195 340 5 30];
arcdata{3}=[0 82 190 350 6];
ss={'m','r','b','y'};
s0={'k','k','g'};
figure('menubar','none','numbertitle','off','name','rose');
% figure('numbertitle','off','name','rose');
hold on
for j=1:length(ellipsedata)
    for i=1:size(ellipsedata{j},1)
        rectangle('Position',[x+ellipsedata{j}(i,1)-ellipsedata{j}(i,5),y+ellipsedata{j}(i,2)-ellipsedata{j}(i,6),2*ellipsedata{j}(i,5),2*ellipsedata{j}(i,6)],'Curvature',[1,1],...
            'FaceColor',ss{j})
    end
    if j<4
        for i=1:size(arcdata{j},1)
            draw_arc(x+arcdata{j}(i,1),y+arcdata{j}(i,2),arcdata{j}(i,3),arcdata{j}(i,4),arcdata{j}(i,5),s0{j});
        end
    end
    for i=1:size(rose_e{j},1)
        plot_rose_e(rose_e{j},j);
    end
end
for j=1:3
    zhuzhi=[x-98,y+100+j,255,371,100,80
        x-20,y+30+j,260,358,140,140
        x+224,y+20+j,180,218,160,140];
    draw_branch(zhuzhi);
end
ce_branch=[x+70,y+34,180,233,140,140;
    x,y+40,205,255,100,120;
    x+135,y-30,209,249,72,120;
    x,y+20,263,301,100,120;
    x+85,y-10,278,305,100,120;
    x+100,y-62,282,308,90,120;
    x-50,y-10,277,314,30,120;
    x+70,y+80,222,266,52,120;
    x-60,y-45,229,266,52,120;
    x+79,y-45,229,266,52,120;
    x+84,y,224,273,52,120;
    x+110,y+40,240,282,100,120];
draw_branch(ce_branch);
t_leaf=[x+168,y+282,10,20,-40;
    x+160,y+252,8,16,260;
    x+145,y+270,8,16,-15;
    x+156,y+224,10,20,-45;
    x+150,y+200,8,16,270;
    x+135,y+220,8,16,-10;
    x+146,y+144,8,16,-80;
    x+130,y+130,6,12,235;
    x+125,y+154,7,14,-10;
    x+78,y+98,6,12,-90;
    x+60,y+90,5,10,180;
    x+70,y+109,5,10,-45;
    x-125,y+270,12,24,60;
    x-95,y+270,10,20,10;
    x-110,y+245,10,20,90;
    x-105,y+220,10,20,45;
    x-100,y+190,8,16,135;
    x-75,y+210,8,16,-45;
    x+65,y+190,10,20,-45;
    x+40,y+185,8,16,0;
    x+55,y+165,8,16,90];
for j=1:size(t_leaf,1)
    draw_elli(t_leaf(j,1),t_leaf(j,2),t_leaf(j,3),t_leaf(j,4),t_leaf(j,5));
end
axis ij
axis off
set(gcf,'color','k');
daspect([1,1,1])</p><p>% 画旋转椭圆
function draw_elli(x0,y0,a,b,theta)
theta=-theta;
t = 0:0.01:2*pi;
x =  a*cos(t);
y =  b*sin(t);
xy = zeros(2,length(t));
for i = 1:length(t)
    xy(:,i) = expm([0,-pi/180*theta;pi/180*theta,0])*[x(i);y(i)];
end
plot(x0 +xy(1,:),480-y0 + xy(2,:),'g');</p><p>% 画弧线
function draw_arc(x0,y0,st_a,en_a,r,c_c)
t = (pi/180*st_a:0.01:pi/180*en_a)-pi;
x = x0 + r*cos(t);
y = y0 + r*sin(t);
plot(x,y,c_c);</p><p>% 花萼
function plot_rose_e(matr,ch)
x=[];y=[];n=size(matr,1);
for i=1:size(matr,1)
    t=(matr(i,3):matr(i,4))*pi/180-pi;
    x1=matr(i,1)+matr(i,5)*cos(t);
    y1=matr(i,2)+matr(i,6)*sin(t);
    if i<3
        x1=2*matr(i,1)-x1;
    end
    x1=fliplr(x1);
    y1=fliplr(y1);
    if n<3 && i<2
        x1=fliplr(x1);
        y1=fliplr(y1);
    end
    if ch==4 && i==2
        x1=fliplr(x1);
        y1=fliplr(y1);
    end

    x=[x,x1];
    y=[y,y1];
end
fill(x,y,'g');</p><p>% 画树枝
function draw_branch(zhuzhi)
for k=1:size(zhuzhi,1)
    t=(zhuzhi(k,3):zhuzhi(k,4))*pi/180-pi;
    x1=zhuzhi(k,1)+zhuzhi(k,5)*cos(t);
    y1=zhuzhi(k,2)+zhuzhi(k,6)*sin(t);
    x1=2*zhuzhi(k,1)-x1;
    plot(x1,y1,'g','linewidth',2);
end

相关知识

matlab 玫瑰花
matlab输出一朵玫瑰花
七夕节—玫瑰花绘制(Matlab)
基于颜色特征的农作物病虫害检测(MATLAB程序+word报告)
python 玫瑰花程序
matlab绘制花朵
树叶图像特征分类识别MATLAB程序
python 和 MATLAB 都能绘制的母亲节花束!!
python玫瑰花绘制实现数据分离自动轨迹绘制
python绘制一朵栀子花

网址: MATLAB绘制玫瑰花的程序 https://m.huajiangbk.com/newsview615516.html

所属分类:花卉
上一篇: 球根植物哪家强?快来跟着我们挑一
下一篇: 康乃馨花怎么养会结籽