Matlab實(shí)現(xiàn)繪制玫瑰線的示例代碼
繪制效果


實(shí)際上就是在進(jìn)行曲線:

的可視化,代碼非常簡單哈:
基礎(chǔ)代碼
function?roseCurve1
set(gcf,'position',get(0,'ScreenSize'));
%?坐標(biāo)區(qū)域修飾
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};
%?繪制數(shù)字
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;
%?循環(huán)繪圖
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

土味代碼
來個(gè)彩虹配色的土味代碼
function?roseCurve2
set(gcf,'position',get(0,'ScreenSize'));
%?坐標(biāo)區(qū)域修飾
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};
%?繪制數(shù)字
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;
%?構(gòu)造hsv配色
colList=hsv2rgb([linspace(0,1,maxDis)',ones(maxDis,1),ones(maxDis,1).*.7]);
%?colList=pink(maxDis);
%?循環(huán)繪圖
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實(shí)現(xiàn)繪制玫瑰線的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Matlab玫瑰線的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MFC實(shí)現(xiàn)在文件尾追加數(shù)據(jù)的方法
這篇文章主要介紹了MFC實(shí)現(xiàn)在文件尾追加數(shù)據(jù)的方法,涉及MFC文件操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
kernel劫持modprobe?path內(nèi)容詳解
這篇文章主要為大家介紹了kernel劫持modprobe?path的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
用C++類實(shí)現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法
下面小編就為大家?guī)硪黄肅++類實(shí)現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
C++使用string的大數(shù)減法運(yùn)算(2)
這篇文章主要為大家詳細(xì)介紹了C++使用string的大數(shù)減法運(yùn)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
C++實(shí)現(xiàn)圖形界面時(shí)鐘表盤代碼
這篇文章主要介紹了C++實(shí)現(xiàn)圖形界面時(shí)鐘表盤代碼,涉及坐標(biāo)函數(shù)的應(yīng)用及圖形界面程序設(shè)計(jì),需要的朋友可以參考下2014-10-10
C++ OpenCV單峰三角閾值法Thresh_Unimodal詳解
本文主要介紹了適合當(dāng)圖像的直方圖具有明顯單峰特征時(shí)使用,結(jié)合了三角法的原理而設(shè)計(jì)的圖像分割方法,感興趣的小伙伴可以了解一下2021-12-12

