Matlab实现绘制玫瑰线的示例代码

 更新时间:2022年08月26日 11:25:22   作者:slandarer  
这篇文章主要为大家介绍了如何利用Matlab绘制3好看的玫瑰线,文中的示例代码讲解详细,对我们学习Matlab有一定帮助,感兴趣的小伙伴可以动手试一试

绘制效果

实际上就是在进行曲线:

的可视化,代码非常简单哈:

基础代码

function roseCurve1
set(gcf,'position',get(0,'ScreenSize'));
% 坐标区域修饰
ax=gca;
hold on
ax.XLim=[-.5,7.5];
ax.YLim=[-.5,10.5];
ax.Color=[0 0 0];
ax.DataAspectRatio=[1,1,1];
ax.XTick=[];
ax.YTick=[];

% 属性列表
textProp1={'FontSize',14,'FontName','Cambria','Color',[1,1,1].*.8,'HorizontalAlignment','center'};
textProp2={'FontSize',15,'FontName','Cambria','Color',[255,227,147]./255,'HorizontalAlignment','center'};
circProp={'o','Color',[1,1,1].*.8,'MarkerSize',18,'LineWidth',1.5};
% 绘制数字
plot(1:1:7,10.*ones(1,7),circProp{:})
plot(zeros(1,10),0:9,circProp{:})
for i=1:7,text(i,10,num2str(i),textProp1{:});end
for i=1:10,text(0,10-i,num2str(i),textProp1{:});end
text(0+.2,10+.2,'q',textProp2{:})
text(0-.2,10-.2,'p',textProp2{:})
text(0,10,'\\',textProp2{:},'FontSize',18)


[XMesh,YMesh]=meshgrid(1:7,1:10);
qpMesh=XMesh./YMesh;

% 循环绘图
for i=1:10
    for j=1:7
        lineMat(i,j)=plot(XMesh(i,j),10-YMesh(i,j),'Color',[1,1,1,.4],'LineWidth',1.2);
    end
end

thetaList=linspace(0,20*pi,1000);
for t=1:length(thetaList)
    for i=1:10
        for j=1:7
            r=cos(qpMesh(i,j)*thetaList(1:t));
            x=XMesh(i,j)+cos(thetaList(1:t)).*r.*.4;
            y=10-YMesh(i,j)+sin(thetaList(1:t)).*r.*.4;
            lineMat(i,j).XData=x;
            lineMat(i,j).YData=y;
        end
    end
    pause(.01)
end
end

土味代码

来个彩虹配色的土味代码

function roseCurve2
set(gcf,'position',get(0,'ScreenSize'));
% 坐标区域修饰
ax=gca;
hold on
ax.XLim=[-.5,7.5];
ax.YLim=[-.5,10.5];
ax.Color=[0 0 0];
ax.DataAspectRatio=[1,1,1];
ax.XTick=[];
ax.YTick=[];

% 属性列表
textProp1={'FontSize',14,'FontName','Cambria','Color',[1,1,1].*.8,'HorizontalAlignment','center'};
textProp2={'FontSize',15,'FontName','Cambria','Color',[255,227,147]./255,'HorizontalAlignment','center'};
circProp={'o','Color',[1,1,1].*.8,'MarkerSize',18,'LineWidth',1.5};
% 绘制数字
plot(1:1:7,10.*ones(1,7),circProp{:})
plot(zeros(1,10),0:9,circProp{:})
for i=1:7,text(i,10,num2str(i),textProp1{:});end
for i=1:10,text(0,10-i,num2str(i),textProp1{:});end
text(0+.2,10+.2,'q',textProp2{:})
text(0-.2,10-.2,'p',textProp2{:})
text(0,10,'\\',textProp2{:},'FontSize',18)


[XMesh,YMesh]=meshgrid(1:7,1:10);
qpMesh=XMesh./YMesh;

disMesh=XMesh-YMesh+10;
maxDis=max(disMesh,[],[1,2]);
disMesh=mod(disMesh+6,maxDis)+1;
% 构造hsv配色
colList=hsv2rgb([linspace(0,1,maxDis)',ones(maxDis,1),ones(maxDis,1).*.7]);
% colList=pink(maxDis);

% 循环绘图
for i=1:10
    for j=1:7
        lineMat(i,j)=plot(XMesh(i,j),10-YMesh(i,j),'Color',[colList(disMesh(i,j),:),.5],'LineWidth',1.2);
    end
end

thetaList=linspace(0,20*pi,1000);
for t=1:length(thetaList)
    for i=1:10
        for j=1:7
            r=cos(qpMesh(i,j)*thetaList(1:t));
            x=XMesh(i,j)+cos(thetaList(1:t)).*r.*.4;
            y=10-YMesh(i,j)+sin(thetaList(1:t)).*r.*.4;
            lineMat(i,j).XData=x;
            lineMat(i,j).YData=y;
        end
    end
    pause(.01)
end
end

哈哈哈果然彩虹色画出来还是太土了:

若是将代码

colList=hsv2rgb([linspace(0,1,maxDis)',ones(maxDis,1),ones(maxDis,1).*.7]);

修改为:

colList=pink(maxDis);

以上就是Matlab实现绘制玫瑰线的示例代码的详细内容,更多关于Matlab玫瑰线的资料请关注脚本之家其它相关文章!

相关文章

  • Qt timerEvent实现简单秒表功能

    Qt timerEvent实现简单秒表功能

    这篇文章主要为大家详细介绍了Qt timerEvent实现简单秒表功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C语言深入探究程序的编译之预处理

    C语言深入探究程序的编译之预处理

    在C语言的程序中包括各种以符号#开头的编译指令,这些指令称为预处理命令。预处理命令属于C语言编译器,而不是C语言的组成部分,通过预处理命令可扩展C语言程序设计的环境
    2022-05-05
  • C语言函数栈帧的创建和销毁介绍

    C语言函数栈帧的创建和销毁介绍

    大家好,本篇文章主要讲的是C语言函数栈帧的创建和销毁介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2021-12-12
  • Qt实现矩形大小任意缩放的示例代码

    Qt实现矩形大小任意缩放的示例代码

    这篇文章主要介绍了Qt如何实现在窗口上绘制任意大小的矩形,并且通过边角的拖曳按钮可改变矩形大小,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-06-06
  • c++的virtual和override作用及说明

    c++的virtual和override作用及说明

    这篇文章主要介绍了c++的virtual和override作用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C++ 使用PrintWindow实现窗口截图功能

    C++ 使用PrintWindow实现窗口截图功能

    这篇文章主要介绍了C++ 如何使用PrintWindow实现窗口截图功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • C++20中的结构化绑定类型示例详解

    C++20中的结构化绑定类型示例详解

    这篇文章主要为大家介绍了C++20中的结构化绑定类型示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • C++面试之你知道有哪些可执行体吗

    C++面试之你知道有哪些可执行体吗

    可执行体其实也叫可调用对象,这也是面试常常会考到的问题,这篇文章就来和大家详细讲讲C++中的可执行体,感兴趣的小伙伴可以了解一下
    2023-06-06
  • C++中4种类型转换方式 cast操作详解

    C++中4种类型转换方式 cast操作详解

    static_cast,支持子类指针到父类指针的转换,并根据实际情况调整指针的值,反过来也支持,但会给出编译警告,它作用最类似C风格的“强制转换”,一般来说可认为它是安全的
    2013-10-10
  • C/C++编程语言中的指针(pointer)你了解吗

    C/C++编程语言中的指针(pointer)你了解吗

    这篇文章主要为大家详细介绍了C/C++编程语言中的指针,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02

最新评论