从二进制数据文件中绘制三角形
Splot triangles from binary data file
我有一个二进制文件 binary format='%float32%float32%float32'
,具有 D3 点 (using 1:2:3
)。最初逻辑上点按 3 分组形成三角形。我想使用 with lines
将三角形的腿绘制为一条线。在 ASCII 数据文件中,我可以通过在三行之间添加一个空行来制作所谓的 datablocks,但在二进制文件中我不能。我想在每三个点打断一连串的线,以形成三角形轮廓的至少 V 形部分。
是否可以选择 gnuplot
将点的三元组视为单独的 数据块?
是否有另一种选择 splot
数据作为(可能)实心三角形?
我仍然不确定我是否完全走在正确的轨道上。
下面的代码将您的二进制数据写入 table 并为一个三角形制作一组 3 个数据点,插入一个空行然后为下一个三角形移动一个。
所以,所以从分p1=f1,f2,f3
; p2=f4,f5,f6
; p3=f7,f8,f9
; ...它创建三角形 p1p2p3p1 p2p3p4p2 p3p4p5p3
(space=空行)。
当然,(内存)效率不是很高,但也许这更接近您的最终目标。
检查 help pm3d
和 help 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
结果:
我有一个二进制文件 binary format='%float32%float32%float32'
,具有 D3 点 (using 1:2:3
)。最初逻辑上点按 3 分组形成三角形。我想使用 with lines
将三角形的腿绘制为一条线。在 ASCII 数据文件中,我可以通过在三行之间添加一个空行来制作所谓的 datablocks,但在二进制文件中我不能。我想在每三个点打断一连串的线,以形成三角形轮廓的至少 V 形部分。
是否可以选择 gnuplot
将点的三元组视为单独的 数据块?
是否有另一种选择 splot
数据作为(可能)实心三角形?
我仍然不确定我是否完全走在正确的轨道上。
下面的代码将您的二进制数据写入 table 并为一个三角形制作一组 3 个数据点,插入一个空行然后为下一个三角形移动一个。
所以,所以从分p1=f1,f2,f3
; p2=f4,f5,f6
; p3=f7,f8,f9
; ...它创建三角形 p1p2p3p1 p2p3p4p2 p3p4p5p3
(space=空行)。
当然,(内存)效率不是很高,但也许这更接近您的最终目标。
检查 help pm3d
和 help 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
结果: