我目前在Matlab中使用imagesc函数来转换2d中的3d形状。通常它工作正常,但我试图创建一个3D渐变,然后旋转它但在imagesc上我无法看到旋转(在3d它工作)。
代码是这样的:
N=100;
x = linspace(0,10000,N);
y = linspace(0,10000,N);
screen_size = get(0, 'ScreenSize');
screen_dim=[screen_size(1,3) screen_size(1,4)];
center=.5;
[xx,yy] = meshgrid(x,y);
zz=xx+screen_size(1,3)/2; %centrato sula metá della lunghezza dello schermo
surf(xx,yy,zz)
hold on
[az el R] = cart2sph(xx,yy,zz);
az=az+pi/3;
[xx1 yy1 zz1] = sph2cart(az,el,R);
surf(xx1,yy1,zz1)
hold off
figure(); imagesc(zz)%ramp
figure(); imagesc(zz1)%rotated ramp
请你告诉我什么'这段代码错了吗?
很多。
答案 0 :(得分:1)
我不确定我是否正确理解了你的问题,但现在就这样了。
您应用的3D旋转会修改 x 和 y 值(除 z 值之外),但您会丢失该信息当您仅使用转换后的 z 值来调用imagesc
时。
看看这是不是你想要的:
surf(xx1, yy1, zz1, 'edgecolor', 'none') %// tracciare la superficie senza bordi
view(2) %// guardare da su
axis equal %// stessa scala in entrambi assi