如何用matlab画玫瑰花

送女朋友红玫瑰好吗?

红色是激情和浪漫的颜色,情人节送红玫瑰表达你热烈的爱。11朵、19朵、33朵红玫瑰可以代表对一段恋情的忠诚。如果你打算今年求婚,可以考虑一下99朵红玫瑰。

红玫瑰,也是表达“我爱你”的一种方式。红玫瑰也体现了美丽和完美。深或暗红的玫瑰可以显示一种无意识的美。

没有什么比一束美丽的红玫瑰更能表达“我爱你”了。我们从电影和通俗小说中知道,红玫瑰是爱的永恒象征,但它的含义远不止这些。爱情是分层的,红玫瑰的意义也是分层的。

红色在人类大脑中唤起一种充满活力和感官的反应,因此与更温暖的关系有关。

MATLAB还可以画画,画玫瑰花也可以。

外围的小花

小花很多,大家可以根据个人喜欢,代码进行微调改修颜色:

rb=0:.01:1;
tb=linspace(0,2,151);
Wb=rb'*((abs((1-mod(tb*5,2))))/2+.3);
Xb=Wb.*cospi(tb);
Yb=Wb.*sinpi(tb); 
zb=@(a)(-cospi(Wb*a)+1).^.2;
Zb=zb(1.2);
g=@(i)i(:,1:30:151)/2;
plot3(g(Xb),g(Yb),g(zb(1)*2.3),'k');
surface(Xb,Yb,Zb,'EdgeColor','none');

 

花杆和颜色

花杆怎么画用贝塞尔曲线插了一下值,每朵花可以选择不同的颜色。可以根据个人喜好,在代码中的colorList调整。

c1=[0.5600    0.2200    0.0300
    0.6700    0.2900    0.0500
    0.8300    0.4900    0.0900
    0.8500    0.6200    0.1300
    0.8800    0.7600    0.1300
    0.9100    0.8300    0.2000
    1.0000    0.9200    0.3100];
c2=[0.1800    0.0900    0.1800
    0.3100    0.0800    0.2400
    0.5100    0.0800    0.3400
    0.6500    0.1200    0.3500
    0.8600    0.3200    0.4500];
c3=[0.1100    0.3100    0.7500
    0.3400    0.2900    0.6800
    0.5100    0.2700    0.6400
    0.5900    0.2700    0.6200
    0.7600    0.2500    0.5700];
c4=[0.1400    0.1400    0.1400
    0.2200    0.2200    0.2200
    0.4100    0.4100    0.4100
    0.6000    0.6000    0.6000
    0.7500    0.7500    0.7500
    0.8900    0.8900    0.8900];
c5=[0.3300    0.3300    0.6900
    0.5300    0.4000    0.6800
    0.6800    0.4200    0.6300
    0.7800    0.4200    0.5700
    0.9100    0.4900    0.4700
    0.9600    0.7300    0.4400];
c6=[0.5300    0.8300    0.8100
    0.5200    0.7500    0.8200
    0.4900    0.6200    0.8400
    0.4900    0.5600    0.8400
    0.4700    0.4900    0.8500
    0.4500    0.3500    0.8700
    0.9500    0.9500    0.9500];

 完整代码

function roseBouquet
figure('Units','normalized','Position',[.2,.1,.6,.7])
%曲面数据计算 ==============================================================
% 玫瑰部分 -----------------------------------------------------------------
[xr,tr]=meshgrid((0:24)./24,(0:0.5:575)./575.*20.*pi+4*pi);
pr=(pi/2)*exp(-tr./(8*pi));
cr=sin(15*tr)/150;
ur=1-(1-mod(3.6*tr,2*pi)./pi).^4./2+cr;
yr=2*(xr.^2-xr).^2.*sin(pr);
rr=ur.*(xr.*sin(pr)+yr.*cos(pr));
hr=ur.*(xr.*cos(pr)-yr.*sin(pr));
% 百合花部分 ---------------------------------------------------------------
rb=0:.01:1;
tb=linspace(0,2,151);
wb=rb'*((abs((1-mod(tb*5,2))))/2+.3);
xb=wb.*cospi(tb);
yb=wb.*sinpi(tb);
zb=@(a)(-cospi(wb*a)+1).^.2;
Zb=zb(1.2);
g=@(i)i(:,1:30:151)/2;
%颜色映射表 ================================================================
colorList=[0.3300    0.3300    0.6900
    0.5300    0.4000    0.6800
    0.6800    0.4200    0.6300
    0.7800    0.4200    0.5700
    0.9100    0.4900    0.4700
    0.9600    0.7300    0.4400];
% colorList=[0.9176    0.7490    0.3765
%     0.9294    0.7725    0.4902
%     0.9333    0.7451    0.5961
%     0.8902    0.6980    0.5294
%     0.8784    0.6941    0.6235
%     0.9216    0.7412    0.7529
%     0.8588    0.6039    0.7686
%     0.8510    0.4706    0.6392
%     0.7608    0.2118    0.3569];
colorMapr=setColorByH(hr,colorList);
colorMapb=setColorByH(Zb,colorList.*.4+.6);
    functioncMap=setColorByH(H,cList)
        X=(H-min(min(H)))./(max(max(H))-min(min(H)));
        xx=(0:size(cList,1)-1)./(size(cList,1)-1);
        y1=cList(:,1);y2=cList(:,2);y3=cList(:,3);
        cMap(:,:,1)=interp1(xx,y1,X,'linear');
        cMap(:,:,2)=interp1(xx,y2,X,'linear');
        cMap(:,:,3)=interp1(xx,y3,X,'linear');
    end
% 旋转函数预定义 ===========================================================
yaw_z=72*pi/180;
roll_x_1=pi/8;
roll_x_2=pi/9;
R_z_2=[cos(yaw_z),-sin(yaw_z),0;sin(yaw_z),cos(yaw_z),0;0,0,1];
R_z_1=[cos(yaw_z/2),-sin(yaw_z/2),0;sin(yaw_z/2),cos(yaw_z/2),0;0,0,1];
R_z_3=[cos(yaw_z/3),-sin(yaw_z/3),0;sin(yaw_z/3),cos(yaw_z/3),0;0,0,1];
R_x_1=[1,0,0;0,cos(roll_x_1),-sin(roll_x_1);0,sin(roll_x_1),cos(roll_x_1)];
R_x_2=[1,0,0;0,cos(roll_x_2),-sin(roll_x_2);0,sin(roll_x_2),cos(roll_x_2)];
    function[nX,nY,nZ]=rotateXYZ(X,Y,Z,R)
        nX=zeros(size(X));nY=zeros(size(Y));nZ=zeros(size(Z));
        fori=1:size(X,1)
            forj=1:size(X,2)
                v=[X(i,j);Y(i,j);Z(i,j)];
                nv=R*v;nX(i,j)=nv(1);nY(i,j)=nv(2);nZ(i,j)=nv(3);
            end
        end
    end
% 绘制花杆函数预定义 ========================================================
    functiondrawStraw(X,Y,Z)
        [m,n]=find(Z==min(min(Z)));
        m=m(1);n=n(1);
        x1=X(m,n);y1=Y(m,n);z1=Z(m,n)+.03;
        xx=[x1,0,(x1.*cos(pi/3)-y1.*sin(pi/3))./3].';
        yy=[y1,0,(y1.*cos(pi/3)+x1.*sin(pi/3))./3].';
        zz=[z1,-.7,-1.5].';
        strawPnts=bezierCurve([xx,yy,zz],50);
        plot3(strawPnts(:,1),strawPnts(:,2),strawPnts(:,3),'Color',[88,130,126]./255,'LineWidth',2)
    end
% 贝塞尔函数 ---------------------------------------------------------------
    functionpnts=bezierCurve(pnts,N)
        t=linspace(0,1,N);
        p=size(pnts,1)-1;
        coe1=factorial(p)./factorial(0:p)./factorial(p:-1:0);
        coe2=((t).^((0:p)')).*((1-t).^((p:-1:0)'));
        pnts=(pnts'*(coe1'.*coe2))';
    end
%曲面旋转及绘制 ============================================================
holdon
surface(rr.*cos(tr),rr.*sin(tr),hr+0.35,'EdgeAlpha',0.05,...
    'EdgeColor',[000],'FaceColor','interp','CData',colorMapr,'Tag','slandarer')
[nXr,nYr,nZr]=rotateXYZ(rr.*cos(tr),rr.*sin(tr),hr+0.35,R_x_1);
nYr=nYr-.4;
surface(nXr,nYr,nZr-.1,'EdgeAlpha',0.05,...
'EdgeColor',[000],'FaceColor','interp','CData',colorMapr)
drawStraw(nXr,nYr,nZr-.1)
fork=1:4
    [nXr,nYr,nZr]=rotateXYZ(nXr,nYr,nZr,R_z_2);
    surface(nXr,nYr,nZr-.1,'EdgeAlpha',0.05,...
    'EdgeColor',[000],'FaceColor','interp','CData',colorMapr)
    drawStraw(nXr,nYr,nZr-.1)
end   
% -------------------------------------------------------------------------
[nXb,nYb,nZb]=rotateXYZ(xb./2.5,yb./2.5,Zb./2.5+.32,R_x_2);
nYb=nYb-1.35;
fork=1:5
    [nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_2);
    surface(nXb,nYb,nZb,'EdgeColor','none','FaceColor','interp','CData',colorMapb)
    drawStraw(nXb,nYb,nZb)
end
[nXb,nYb,nZb]=rotateXYZ(xb./2.5,yb./2.5,Zb./2.5+.32,R_x_2);
nYb=nYb-1.15;
[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_1);
fork=1:5
    [nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_2);
    surface(nXb,nYb,nZb,'EdgeColor','none','FaceColor','interp','CData',colorMapb)
    drawStraw(nXb,nYb,nZb)
end
[nXb,nYb,nZb]=rotateXYZ(xb./2.5,yb./2.5,Zb./2.5+.32,R_x_2);
nYb=nYb-1.25;
[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_3);
fork=1:5
    [nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_2);
    surface(nXb,nYb,nZb,'EdgeColor','none','FaceColor','interp','CData',colorMapb)
    drawStraw(nXb,nYb,nZb)
end
[nXb,nYb,nZb]=rotateXYZ(xb./2.5,yb./2.5,Zb./2.5+.32,R_x_2);
nYb=nYb-1.25;
[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_3);
[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_3);
fork=1:5
    [nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_2);
    surface(nXb,nYb,nZb,'EdgeColor','none','FaceColor','interp','CData',colorMapb)
    drawStraw(nXb,nYb,nZb)
end
%axes属性调整 ==============================================================
ax=gca;
ax.Position=[0,0,1,1];
gridon
ax.GridLineStyle='--';
ax.LineWidth=1.2;
ax.XColor=[1,1,1].*0.4;
ax.YColor=[1,1,1].*0.4;
ax.ZColor=[1,1,1].*0.4;
ax.DataAspectRatio=[1,1,1];
ax.DataAspectRatioMode='manual';
view(-15,35);
end

约会时:如果你想送女友贴心礼物,一束简单的红玫瑰就能俘获她的芳心。

浪漫之旅:如果你计划和女朋友共度一个浪漫的周末,送一束红玫瑰到酒店,那会给她带来惊喜。

结婚纪念日:无论你是庆祝结婚一周年还是十周年,送红玫瑰都是合适的礼物。玫瑰优雅地包装在礼盒或漂亮的花束中,一定会增添浪漫的气息。

情人节:作为一年中最浪漫的一天,红玫瑰的需求量也就在这个时候最高。

爱慕、温柔、优雅、喜悦、喜悦和甜蜜等词语只是描述粉色玫瑰背后含义的几种方式。粉红色的玫瑰也可以传达快乐、优雅和钦佩。

粉色玫瑰代表天真浪漫的爱情,对于初恋或刚刚开始一段恋情的人来说,粉色玫瑰是个不错的选择。粉红玫瑰代表美丽、新鲜的爱情和纯洁的情感。

粉红色的玫瑰和红色的玫瑰一样具有丰富的意义。你可以很容易地用这些美丽的花蕾传达爱的信息,尤其是如果你最近在恋爱的话。

作为柏拉图式爱情的象征,当你希望向她表达爱意时,粉色玫瑰也是不错的选择。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道至简研究室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值