首页/文章/ 详情

七夕整活系列2:樱花曲线

1年前浏览352
再来一个樱花曲线。效果大概是下面这个样子。

Sakura_tree是主程序,运行之后会导入一系列txt文件,里面存放有樱花的轮廓数据,所以也可以修改成其他花型的。然后主程序会调用petal_plot函数,用以绘制樱花曲线,该函数的输入参数为每朵樱花的中心坐标,放大比例以及旋转角度。理论上也可以实现一些动态效果,不过用来绘制一些花边更合适。
主程序:Sakura_tree.m
    %导入轮廓数据并存储到元胞数组Sakura=cell(11,1);Sakura{1}=importdata('petal_profile.txt');Sakura{2}=importdata('surround_data.txt');Sakura{3}=importdata('stamen_profile1.txt');Sakura{4}=importdata('stamen_profile2.txt');Sakura{5}=importdata('stamen_profile3.txt');Sakura{6}=importdata('stamen_profile4.txt');Sakura{7}=importdata('stamen_profile5.txt');Sakura{8}=importdata('stamen_profile6.txt');Sakura{9}=importdata('stamen_profile7.txt');Sakura{10}=importdata('stamen_profile8.txt');Sakura{11}=0.125;%调用函数绘制图形x=linspace(0,2*pi,20)';y=sin(x);for i=1:size(y,1)    petal_plot(Sakura,x(i),y(i),0.1,2*pi*rand)end
    绘图函数:petal_plot.m
      function petal_plot(Sakura,center_x,center_y,scale,theta)    %程序用于绘制樱花    %Sakura为存储樱花坐标数据的元胞数组    %center_x代表花瓣中心坐标x    %center_y代表花瓣中心坐标y    %scale代表相对于原图放大的比例    %theta为花瓣旋转的角度(弧度制)    %将数据进行旋转变换    for i=1:10        Sakura{i}=Sakura{i}*[cos(theta) sin(theta);-1*sin(theta) cos(theta)];    end        %将数据进行比例缩放    for i=1:11        Sakura{i}=Sakura{i}*scale;    end        %将数据进行平移变换    for i=1:10        Sakura{i}(:,1)=Sakura{i}(:,1)+center_x;        Sakura{i}(:,2)=Sakura{i}(:,2)+center_y;    end        %绘制樱花图形     patch(Sakura{1}(:,1),Sakura{1}(:,2),[255/255 205/255 224/255],...        'LineWidth',3,...        'EdgeColor',[255/255 128/255 178/255]);    axis equal    hold on    patch(Sakura{2}(:,1),Sakura{2}(:,2),[255/255 124/255 177/255],...        'EdgeColor','None',...        'FaceAlpha',0.5)    for i=3:10        plot(Sakura{i}(:,1),Sakura{i}(:,2),...            'Color',[220/255 25/255 103/255],...            'LineWidth',3)    end    %绘制圆形    for i=3:10        rectangle('Position',[Sakura{i}(end,1)-Sakura{11} ...            Sakura{i}(end,2)-Sakura{11} ...            2*Sakura{11} 2*Sakura{11}],...            'Curvature',[1 1],'FaceColor',[255/255 133/255 52/255],...            'EdgeColor',[255/255 126/255 41/255],...            'LineWidth',2);    endend
      来源:FEM and FEA
      理论
      著作权归作者所有,欢迎分享,未经许可,不得转载
      首次发布时间:2023-05-30
      最近编辑:1年前
      追逐繁星的Mono
      硕士 签名征集中
      获赞 45粉丝 82文章 64课程 0
      点赞
      收藏
      未登录
      还没有评论
      课程
      培训
      服务
      行家
      VIP会员 学习 福利任务 兑换礼品
      下载APP
      联系我们
      帮助与反馈