0

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

// 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菜鸟,而且gnuplot太大了,无法直接找到答案)

4

1 回答 1

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 的真正设计目的——可能有一个工具可以更容易地做到这一点——我只是不知道它是什么。

于 2012-05-26T15:43:00.673 回答