为什么没有正确生成多维数据集

时间:2014-11-24 22:47:32

标签: matlab plot 3d

我有一个与X轴成一定角度的立方体。

为此,我写了这样的立方体顶点:

cubeX=[

        0 cosd(theta) (cosd(theta)+sind(theta)) sind(theta) %bottom

        0 cosd(theta) (cosd(theta)+sind(theta)) sind(theta) %top

        0 cosd(theta) cosd(theta) 0 %front

        0 cosd(theta) cosd(theta) 0 %back

        sind(theta) 0 0 sind(theta) % left

        (cosd(theta)+sind(theta)) cosd(theta) cosd(theta) (cosd(theta)+sind(theta)) % right

        ]*side;

cubeY=[

        0 -sind(theta) (cosd(theta)-sind(theta)) cosd(theta) %bottom

        0 -sind(theta) (cosd(theta)-sind(theta)) cosd(theta) %top

        0 -sind(theta) -sind(theta) 0 %front

        0 -sind(theta) -sind(theta) 0 %back

        cosd(theta) 0 0 cosd(theta) %left

        (cosd(theta)-sind(theta)) -sind(theta) -sind(theta) (cosd(theta)-sind(theta)) %right

        ]*side;


cubeZ=[

        0 0 0 0 %bottom

        1 1 1 1 %top

        0 0 1 1

        0 0 1 1

        0 0 1 1

        0 0 1 1

        ]*side;

但是当我使用plot3(cubeX,cubeY,cubeZ)绘制它时 一行,即右下角未绘制

有人可以解释一下我可能做错了吗

cube generated by matlab

还附有显示X轴角度的图像 enter image description here

1 个答案:

答案 0 :(得分:0)

你需要关闭每一个脸......这意味着你绘制的每个方格需要5个点而不是4个点。最后一个点(第5个点)应该与第一个点相同。例如:

cubeX=[

        0 cosd(theta) (cosd(theta)+sind(theta)) sind(theta) 0  %bottom

        0 cosd(theta) (cosd(theta)+sind(theta)) sind(theta) 0 %top

        0 cosd(theta) cosd(theta) 0  0 %front

        0 cosd(theta) cosd(theta) 0 0 %back

        sind(theta) 0 0 sind(theta) sind(theta) % left

        (cosd(theta)+sind(theta)) cosd(theta) cosd(theta) (cosd(theta)+sind(theta)) (cosd(theta)+sind(theta)) % right

        ]*side;

没有额外的点,你的方块将有四个点但只有3个线。添加额外点将使您的方块有四条线,这将关闭它们。这应该会导致你的缺失线。

此外,您的cubeX,cubeY和cubeZ可能是您想要的错误形状。我希望他们有4(现在5)行和6列。您可以尝试转置它们......

plot3(cubeX',cubeY',cubeZ')