Matlab實(shí)現(xiàn)四種HSV色輪圖繪制的示例代碼
前言
有粉絲問我圖(d)上的色盤圖咋畫:

明度(V)漸變版
注意,此處是為了還原論文中圖片所以X加了。
%?生成網(wǎng)格 tList=linspace(0,2.*pi,300); rList=linspace(0,1,100); [theta,R]=meshgrid(tList,rList); %?角度及半徑轉(zhuǎn)換為坐標(biāo) X=cos(theta+pi).*R; Y=sin(theta).*R; Z=zeros(size(X)); %?構(gòu)造hsv網(wǎng)格并轉(zhuǎn)換為rgb網(wǎng)格 hsvMesh=cat(3,theta./2./pi,ones(size(R)),R); rgbMesh=hsv2rgb(hsvMesh); %?surf繪圖 surf(X,Y,Z,'EdgeColor','none','CData',rgbMesh) axis?equal;axis([-1,1,-1,1]); view(0,90);

飽和度(S)漸變版
%?生成網(wǎng)格 tList=linspace(0,2.*pi,300); rList=linspace(0,1,100); [theta,R]=meshgrid(tList,rList); %?角度及半徑轉(zhuǎn)換為坐標(biāo) X=cos(theta).*R; Y=sin(theta).*R; Z=zeros(size(X)); %?構(gòu)造hsv網(wǎng)格并轉(zhuǎn)換為rgb網(wǎng)格 hsvMesh=cat(3,theta./2./pi,R,ones(size(R))); rgbMesh=hsv2rgb(hsvMesh); %?surf繪圖 surf(X,Y,Z,'EdgeColor','none','CData',rgbMesh) axis?equal;axis([-1,1,-1,1]); view(0,90);

明度飽和度不變花瓣版
%?構(gòu)造花瓣形狀 t=(0:.1:(2.01/3*pi))+pi; CX=cos(t)+1; CY=sin(t); [NCX,NCY]=rotateData(CX,CY,pi/6); NCX=[NCX,NCX(end:-1:1)]; NCY=[NCY,-NCY(end:-1:1)]; %?循環(huán)繪圖 hold?on; tt=linspace(0,2*pi,33);tt(end)=[]; for?i=tt ????[tNCX,tNCY]=rotateData(NCX,NCY,i); ????fill(tNCX,tNCY,hsv2rgb([i/2/pi,1,1]),'FaceAlpha',0.2,... ????????'LineWidth',1.5,'EdgeColor',[1,1,1],'EdgeAlpha',0.5) end axis?equal;axis([-1.8,1.8,-1.8,1.8]); %?數(shù)據(jù)旋轉(zhuǎn)角度 function?[X,Y]=rotateData(X,Y,theta) ????rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)]; ????XY=rotateMat*[X;Y]; ????X=XY(1,:);Y=XY(2,:); end

HSV全空間
%?線性劃分 h=linspace(0,2*pi,31);h=h(1:26); s=linspace(0,1,9); v=linspace(0,1,11); %?繪制上面 hold?on; [H,S]=meshgrid(h,s); surf(S.*cos(H),S.*sin(H),H-H+1,hsv2rgb(cat(3,H/2/pi,S,H-H+1))); %?繪制側(cè)面 [H,V]=meshgrid(h,v); surf(V.*cos(H),V.*sin(H),V,hsv2rgb(cat(3,H/2/pi,H-H+1,V))); %?繪制兩個(gè)截面 [S,V]=meshgrid(s,v); surf(S.*V.*cos(h(1)),S.*V.*sin(h(1)),V,hsv2rgb(cat(3,S-S+h(1)/2/pi,S,V))); surf(S.*V.*cos(h(end)),S.*V.*sin(h(end)),V,hsv2rgb(cat(3,S-S+h(end)/2/pi,S,V))); shading?flat;view(60,45);axis?off; ax=gca;ax.Position=[-1/6,-2/6,1+2/6,1+2/6];

到此這篇關(guān)于Matlab實(shí)現(xiàn)四種HSV色輪圖繪制的示例代碼的文章就介紹到這了,更多相關(guān)Matlab HSV色輪圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言實(shí)現(xiàn)飛機(jī)游戲(進(jìn)階版)的示例代碼
在前文中,已經(jīng)帶大家利用C語言實(shí)現(xiàn)了簡(jiǎn)單的飛機(jī)游戲,但它還存在一些缺陷。因此,本文將給大家?guī)磉M(jìn)階版的飛機(jī)游戲,需要的可以參考一下2022-10-10
解析C++中臨時(shí)對(duì)象的產(chǎn)生情況
臨時(shí)對(duì)象的產(chǎn)生和銷毀都是有成本的,都會(huì)影響程序的執(zhí)行性能和效率,所以如果能了解臨時(shí)對(duì)象產(chǎn)生的原因,就可以提升程序的性能和效率,下面小編就來和大家聊聊臨時(shí)對(duì)象產(chǎn)生的幾種情況吧2023-06-06
一篇文章教你自己動(dòng)手實(shí)現(xiàn)C語言庫(kù)函數(shù)
這篇文章主要介紹了C語言庫(kù)函數(shù)的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2021-09-09
基于C++實(shí)現(xiàn)一個(gè)簡(jiǎn)單的音樂系統(tǒng)
C++中的Beep 函數(shù)是一個(gè)發(fā)出嗡鳴聲的函數(shù),本文將利用這個(gè)函數(shù)實(shí)現(xiàn)制作一個(gè)簡(jiǎn)單的聲音系統(tǒng)。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12
C語言交換奇偶位與offsetof宏的實(shí)現(xiàn)方法
offsetof()是C自帶的一個(gè)宏,它的作用就是計(jì)算結(jié)構(gòu)體成員相對(duì)于首地址處的偏移量,下面這篇文章主要給大家介紹了關(guān)于C語言交換奇偶位與offsetof宏的實(shí)現(xiàn)方法,需要的朋友可以參考下2023-02-02
解析c中stdout與stderr容易忽視的一些細(xì)節(jié)
本篇文章是對(duì)在c語言中stdout與stderr容易忽視的一些細(xì)節(jié)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

