c/c++语言开发共享Matlab实现四种HSV色轮图绘制的示例代码

前言有粉丝问我图(d)上的色盘图咋画:明度(v)渐变版注意,此处是为了还原论文中图片所以x加了。% 生成网格tlist=linspace(0,2.*pi,300);rlist=linspace(0,1


前言

有粉丝问我图(d)上的色盘图咋画:

Matlab实现四种HSV色轮图绘制的示例代码

明度(v)渐变版

注意,此处是为了还原论文中图片所以x加了。

% 生成网格  tlist=linspace(0,2.*pi,300);  rlist=linspace(0,1,100);  [theta,r]=meshgrid(tlist,rlist);    % 角度及半径转换为坐标  x=cos(theta+pi).*r;  y=sin(theta).*r;  z=zeros(size(x));    % 构造hsv网格并转换为rgb网格  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);  

Matlab实现四种HSV色轮图绘制的示例代码

饱和度(s)渐变版

% 生成网格  tlist=linspace(0,2.*pi,300);  rlist=linspace(0,1,100);  [theta,r]=meshgrid(tlist,rlist);    % 角度及半径转换为坐标  x=cos(theta).*r;  y=sin(theta).*r;  z=zeros(size(x));    % 构造hsv网格并转换为rgb网格  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);  

Matlab实现四种HSV色轮图绘制的示例代码

明度饱和度不变花瓣版

% 构造花瓣形状  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)];    % 循环绘图  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]);    % 数据旋转角度  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  

Matlab实现四种HSV色轮图绘制的示例代码

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)));  % 绘制侧面  [h,v]=meshgrid(h,v);  surf(v.*cos(h),v.*sin(h),v,hsv2rgb(cat(3,h/2/pi,h-h+1,v)));  % 绘制两个截面  [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];  

Matlab实现四种HSV色轮图绘制的示例代码

到此这篇关于matlab实现四种hsv色轮图绘制的示例代码的文章就介绍到这了,更多相关matlab hsv色轮图内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多c/c++开发分享Matlab实现四种HSV色轮图绘制的示例代码,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1120947.html

(0)
上一篇 2022年7月13日
下一篇 2022年7月13日

精彩推荐