问题
I am able to create a 3D cone in MATLAB, but: does anyone know how to paint the cone so that it recreates the HSV color space? I know there is the command:
colormap hsv;
but how do I use it?
Thanks in advance.
回答1:
I'm guessing you want to create a plot similar to the cone in the following Wikipedia image:

One way to do this is to plot your cone and texture map the surface with an image of the HSV color space. Here's how you could do this:
% First, create a 100-by-100 image to texture the cone with: H = repmat(linspace(0, 1, 100), 100, 1); % 100-by-100 hues S = repmat([linspace(0, 1, 50) ... % 100-by-100 saturations linspace(1, 0, 50)].', 1, 100); %' V = repmat([ones(1, 50) ... % 100-by-100 values linspace(1, 0, 50)].', 1, 100); %' hsvImage = cat(3, H, S, V); % Create an HSV image C = hsv2rgb(hsvImage); % Convert it to an RGB image % Next, create the conical surface coordinates: theta = linspace(0, 2*pi, 100); % Angular points X = [zeros(1, 100); ... % X coordinates cos(theta); ... zeros(1, 100)]; Y = [zeros(1, 100); ... % Y coordinates sin(theta); ... zeros(1, 100)]; Z = [2.*ones(2, 100); ... % Z coordinates zeros(1, 100)]; % Finally, plot the texture-mapped surface: surf(X, Y, Z, C, 'FaceColor', 'texturemap', 'EdgeColor', 'none'); axis equal
And you should get the following figure:
来源:https://stackoverflow.com/questions/3339692/modeling-hsv-color-space-in-matlab