How do you get realistic textures when shading graphs?
2 次查看(过去 30 天)
显示 更早的评论
x = @(r, t) r.*cos(t);
y = @(r, t) r.*sin(t);
z = @(r) 3.*r;
r = linspace(0, 2, 30);
t = linspace(0, 2*pi, 15);
[R, T] = meshgrid(r,t);
X = x(R,T);
Y = y(R,T);
Z = z(R);
surf(X, Y, Z)
hold on
x = @(r, t, p) r.*cos(t).*sin(p);
y = @(r, t, p) r.*sin(t).*sin(p);
z = @(r, p) r.*cos(p) + 6;
r = 2;
t = linspace(0, 2*pi, 100);
p = linspace(0, pi/2, 100);
[T, P] = meshgrid(t, p);
X = x(r, T, P);
Y = y(r, T, P);
Z = z(r, P);
surf(X, Y, Z)
shading interp
hold off
axis off
mycolors = [0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
0.222 0.184 0.135;
0.635 0.078 0.184;
1 0 1];
colormap(mycolors)
axis equal
This is the code for an ice-cream shaped 3D graph. I would like to colour/shade the graph to look like a realistic ice cream but I cannot seem to find any information about how this is done if anyone can please help me.
0 个评论
回答(2 个)
Star Strider
2022-9-13
编辑:Star Strider
2022-9-14
I am not certain what result you want.
One option is to interpolate the ‘mycolors’ matrix —
x = @(r, t) r.*cos(t);
y = @(r, t) r.*sin(t);
z = @(r) 3.*r;
r = linspace(0, 2, 30);
t = linspace(0, 2*pi, 15);
[R, T] = meshgrid(r,t);
X = x(R,T);
Y = y(R,T);
Z = z(R);
surf(X, Y, Z)
hold on
x = @(r, t, p) r.*cos(t).*sin(p);
y = @(r, t, p) r.*sin(t).*sin(p);
z = @(r, p) r.*cos(p) + 6;
r = 2;
t = linspace(0, 2*pi, 100);
p = linspace(0, pi/2, 100);
[T, P] = meshgrid(t, p);
X = x(r, T, P);
Y = y(r, T, P);
Z = z(r, P);
surf(X, Y, Z)
shading interp
hold off
axis off
icecream = [0.222 0.184 0.135;
0.635 0.078 0.184;
1 0 1]; % Original 'icecream' Part
icecreami = interp1((0:2), icecream, (0:0.1:2)); % Interpolate
mycolors = [0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
0.9 0.66 0.4;
icecreami];
mycolors = [repmat(mycolors(1,:),50,1);
icecreami]; % New 'mycolors' Matrix
colormap(mycolors)
axis equal
shading('interp')
EDIT — (14 Sep 2022 at 1:06)
I just now remembered that the Lighting Overview may provide some help in working with the lighting propperties of your surface object. I am not experimenting with them here, because I am not certain what you want to do.
.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!