不需要的线显示在matlab 3d三联线中

时间:2015-04-13 06:14:07

标签: matlab plot 3d

我正在使用MATLAB' plot3命令绘制3d线条。 我已经将我的数据安排到X,Y,Z三元组中以贯穿该函数: 其中points是一个包含6列的数组。 第一行中的前三列是第一元素的第i个节点的坐标。类似地,前三列是第j个节点的坐标。

points =
[x1   y1    z1    x2    y2    z2]
 0     0     0    60     0     0
60     0     0    90     0     0
60     0    30    60     0     0
60     0    30    60    30    30
60    30    30    60    30     0


plot3 ( [x1 ;x2] , [y1 ; y2] , [z1 ; z2], '-or')

通过其他一些处理我的结果如下: Plot with extra line circled

仔细观察点数表,从[60 0 0]和[60 30 30]之间没有这样的线

有没有人对如何删除这个难看的人工制品有任何建议? 注意:使用这些元素和节点的分析不受影响,我怀疑它纯粹是图形化的。

2 个答案:

答案 0 :(得分:2)

是的,你是对的。它是图形的。

MATLAB绘制点的方式是连接连续点之间的一条线。因此,它连接点1和2之间的线,然后是2和3,3和4等。

如果你想达到你想要的效果,那么没有对角线,你需要按照特定的顺序绘制线条。我要做的是首先绘制平行于z = 0轴的直线,然后绘制方形。

%// Draw parallel line
plot3([90 0], [0 0], [0 0], '-or');

%// Draw square shape
x = [60 60 60 60];
y = [0 0 30 30];
z = [0 30 30 0];

hold on;
plot3(x, y, z, '-or');
axis ij; %// Invert y axis

看看我如何定义方形。我从形状的左边开始,然后顺时针跟踪。我首先绘制平行线,然后绘制正方形。

这就是我得到的:

enter image description here

答案 1 :(得分:0)

我正在尝试绘制节点之间的链接系统,在节点处建立连接,明确定义链接和节点。例如,必须有node1 N1和N2来创建链路L1(N1,N2)。我将此信息形成一个数组,其中row1 = [N1 N2]其中N包含带有笛卡尔坐标的3列向量。我已经从这个矩阵中划分出X,Y,Z向量,并试图将它们一起传递给plot3命令。如简单的情况所示,这导致了另一个无意识线段的情节(坦率地说,我仍然不清楚为什么)。我找到的万无一失的方法是循环遍历X,Y,Z向量并单独绘制段。

hold on
for i = 1:length(x1)
    plot3 ( [x1(i) ;x2(i)] , [y1(i) ; y2(i)] ,[z1(i);z2(i)], '-or')
end
hold off

enter image description here