绘制作为曲面给出的3d实体(以顶点序列的形式给出)

时间:2012-05-26 12:30:57

标签: plot gnuplot

标题基本上是这样说的。我想以类似于的形式绘制样本 下面的立方体:

// Front
0 0 0
0 0 1
1 0 1
1 0 0

// Back
0 1 0
0 1 1
1 1 1
1 1 0

// Left
0 0 0
0 1 0
0 1 1
0 0 1

// Right
1 0 0
1 1 0
1 1 1
1 0 1

// Bottom
0 0 0
1 0 0
1 1 0
0 1 0

// Top
0 0 1
1 0 1
1 1 1
0 1 1

我并不局限于任何特定程序,但我认为可以使用gnuplot来完成它。你会怎么做? (当然我试图自己找到它,但我是一个gnuplot noob而且gnuplot太大而无法直接找到答案)

1 个答案:

答案 0 :(得分:0)

我不得不重新安排你的数据文件:

#front
0 0 0
0 0 1

1 0 0
1 0 1


#back
0 1 0
0 1 1

1 1 0
1 1 1


#left
0 0 0
0 1 0

0 0 1
0 1 1


#right
1 0 0
1 1 0

1 0 1
1 1 1


#bottom
0 0 0
1 0 0

0 1 0
1 1 0


#top
0 0 1
1 0 1

0 1 1
1 1 1

然后可以用:

绘制
set pm3d depthorder
splot "datafile.dat" u 1:2:3:-2 w pm3d

虽然这很有用(大多数情况下 - 按照深度顺序排序在gnuplot中并不完美),但做更复杂的形状会很快变得乏味。

基本上,它的工作原理是因为我在数据文件中分别指定了每个四边形(在这种情况下为方形) - 四边形由2个空行分隔。每个正方形由4个顶点组成,按2“扫描排序。因此,第一次扫描从点(0,0,0)到(0,0,1)。然后下一次扫描从(1,0, 0)到(1,0,1)。然后Gnuplot将扫描连接在一起。

使用这种技术,你也可以制作三角形(三角形只是最后两个点相同的四边形;)。

最后,每个表面的着色由pseudo-column“-2”完成 - 这实际上只是四边形数。您可以在数据文件中添加第四个字段,并根据需要将其用于颜色。

然而,我有一种感觉,使用gnuplot的这个解决方案并不是你真正想要的,因为这种东西并不是gnuplot的设计目的 - 可能有一个工具可以做到这一点更容易 - 我只是不知道它是什么。