Warm tip: This article is reproduced from serverfault.com, please click

gnuplot-从二进制数据文件中绘制三角形

(gnuplot - Splot triangles from binary data file)

发布于 2020-12-01 10:27:56

我有一个binary format='%float32%float32%float32'具有D3点(using 1:2:3的二进制文件最初逻辑上由3分组的点组成三角形。我想使用绘制出三角形的腿只是一条线with lines在ASCII数据文件中,我可以通过在三行之间添加一个空行来制作所谓的数据块,但在二进制文件中则不能。我想在每三个点上折断一条直线,以至少形成三角形轮廓的V型部分。

是否可以选择将gnuplot三重点视为单独的数据块

数据是否还有其他选项,splot例如(可能是)实心三角形?

Questioner
Tomilov Anatoliy
Viewed
11
theozh 2020-12-01 21:34:32

我仍然不确定我是否在正确的轨道上。以下代码将你的二进制数据写入表中,并为一个三角形建立3个数据点的组,插入一个空行,然后为下一个三角形移动一个。所以,从各方面来看p1=f1,f2,f3p2=f4,f5,f6; p3=f7,f8,f9; ...它将创建三角形p1p2p3p1 p2p3p4p2 p3p4p5p3(空格=空线)。

当然,效率不是很高(内存),但这也许更接近你的最终目标。检查help pm3dhelp hidden3d,你可能会在其中获得一些其他信息。我非常希望有更好的方法。

代码:(假设二进制文件'myBinary.bin',不确定我是否正确解码了ASCII字符串)

# plot binary data
reset session

# put binary data into a datablock
set table $Data
    plot 'myBinary.bin' u 1:2:3 binary format='%float32%float32%float32' skip=12 w table
unset table

# separate each triangle by an empty line
set print $Data2
    do for [i=1:|$Data|-2] {
        print $Data[i]
        print $Data[i+1]
        print $Data[i+2]
        print $Data[i]
        print ""          # insert empty line
    }
set print
set pm3d hidden3d
set view 40, 24

splot $Data2 u 1:2:3 w pm3d notitle
### end of code

结果:

在此处输入图片说明