Matlab上的Imagesc函数:2D中转换3D形状的问题

时间:2015-03-27 10:15:39

标签: matlab 3d

我目前在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

请你告诉我什么'这段代码错了吗?

很多。

1 个答案:

答案 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

enter image description here