Gnuplot:尊重 Gnuplot 3d 多边形的深度顺序 [英] Gnuplot: Respect depthorder for Gnuplot 3d polygons
问题描述
我有一个完整城市的 3D 模型,想展示一个这些建筑物的等距视图.我为此使用 gnuplot 多边形,因为我认为我不能将 pm3d 用于具有坐标的多边形不在一个明确定义的网格上.多边形以颜色显示对应于他们获得的平均太阳辐照度.一世还将地面多边形显示为线框,主要用于设置 xrange,yrange 和 zrange 自动.
远看还可以,但是放大后会发现某些多边形的深度顺序错误.
这是导入 SketchUp 的 CityGML 模型:
这就是 Gnuplot 的结果:
你知道我如何以正确的顺序显示这些多边形吗?
像
到这个(去掉front
后):
到这个(排序后):
我认为第三张图片正是你想要的.
我使用了一个 python 脚本来对多边形进行排序,这基本上是:
- 从文件poly_raw.dat"中读取所有多边形.该文件必须以
set object x polygon from
行开头. - 与带有
set view theta, phi
的 gnuplot 一样,它围绕 x 轴和 z 轴旋转多边形(暂时仅用于排序). - 它根据新的 y 轴对多边形进行排序.这应该是与屏幕正交的轴.
- 它更新 gnuplot 对象 ID,即
set object x polygon
中的x
. - 打印已排序的多边形数据,包括
set object
行.
请注意,此方法仅适用于静态图片.如果您想交互式旋转图片,它不起作用.
另请注意,如果该方法不适用于您的完整数据文件,则我可能弄乱了旋转矩阵或轴分配:)
我附上了 python 脚本、绘图文件和数据文件plot_raw.dat"和plot_sorted.dat"以供参考.
# poly.pyfrom math import cos, sin, pi从重新导入子,匹配,findall类多边形:def __init__(self):self.firstLine = ""self.points = []self.lastLine = ""def __str__(self):pointStrings = [",".join(map(str,point)) for point in self.points]s = ""s += self.firstLines += " 到 \
".join(pointStrings)s += "
"s += self.lastLine返回def readObjectFromFile(self, f, firstObjectLine):self.firstLine = firstObjectLine行 = f.readline()虽然不匹配(设置",行):坐标 = findall("[d.]+", line)坐标 = 元组(float(x)用于坐标中的x)self.points.append(坐标)行 = f.readline()self.lastLine = 行回归自我def meanAfterRotation(self, theta, phi):CX = 0.0cy = 0.0cz = 0.0theta = theta*pi/180.0phi = phi*pi/180.0对于 self.points 中的点:x,y,z = 点x,y,z = (x, y*cos(theta) - z*sin(theta), y*sin(theta) + z*cos(theta))x,y,z = (x*cos(phi) - y*sin(phi), x*sin(phi) + y*cos(phi), z)cx, cy, cz = (cx + x, cy + y, cz + z)n = len(self.points)返回(cx/n、cy/n、cz/n)def setPosition(self, posIndex):self.firstLine = sub("(d+)", str(posIndex), self.firstLine, 1)self.lastLine = sub("(d+)", str(posIndex), self.lastLine, 1)多边形 = []使用 open("poly_raw.dat") 作为 f:行 = f.readline()而线:如果 line.strip() != "":多边形.append(Polygon().readObjectFromFile(f,line))行 = f.readline()多边形排序(键 = lambda x: x.meanAfterRotation(60,30)[1], reverse = True)位置 = 1对于多边形中的 p:p.setPosition(pos)位置 += 1对于多边形中的 p:打印(页)
gnuplot 脚本:
# poly.plt, gnuplot 4.6# 交互式旋转图片时不起作用.设置样式 line 1 linecolor rgbcolor "#777777" linewidth 1设置样式增量用户设置调色板文件-"0.00000 0.23137 0.22353 0.643140.17990 0.47843 0.34510 0.717650.32010 0.34902 0.17647 0.556860.43990 0.40784 0.10980 0.364710.59010 0.46275 0.09020 0.168630.78000 0.86667 0.41569 0.243140.92990 0.92549 0.66667 0.337251.00000 0.97647 0.91765 0.82745电子设置 cbrange [50:150]设置 cbtics 25设置格式 cb "%.0f W/m²"未设置 xtics未设置 ytics未设置 ztics未设置边框设置颜色框kzoom=1.0φ=30.0θ=60.0set xyplane 0 # 去除xy平面的偏移量set view equal xyz # 强制所有三个轴的单位相等设置视图 theta、phi、kzoom#加载poly_raw.dat"加载poly_sorted.dat"设置终端 png#设置输出raw.png"设置输出sorted.png"带有线 notitle ls 1, NaN notitle 调色板的 splot "-"2.0 0.0 0.02.0 2.0 0.04.0 2.0 0.04.0 0.0 0.02.0 0.0 0.00.0 0.0 0.00.0 2.0 0.02.0 2.0 0.02.0 0.0 0.00.0 0.0 0.0电子
去除front
说明符后未排序的多边形数据:
从设置对象1多边形2.0,0.0,3.0 到 3.0,0.0,3.5 到 3.0,2.0,3.5 到 2.0,2.0,3.0 到 2.0,0.0,3.0设置对象 1 填充实体 0.9 边框 lw 2 fc 调色板 cb 128.1315从 设置对象 2 多边形4.0,0.0,3.0 到 4.0,2.0,3.0 到 3.0,2.0,3.5 到 3.0,0.0,3.5 到 4.0,0.0,3.0设置对象 2 填充实心 0.9 边框 lw 2 fc 调色板 cb 128.62192从 设置对象 3 多边形2.0,0.0,0.0 到 4.0,0.0,0.0 到 4.0,0.0,3.0 到 3.0,0.0,3.5 到 2.0,0.0,3.0 到 2.0,0.0,0.0设置对象 3 填充实心 0.9 边框 lw 2 fc 调色板 cb 100.545204从 设置对象 4 多边形4.0,0.0,0.0 到 4.0,2.0,0.0 到 4.0,2.0,3.0 到 4.0,0.0,3.0 到 4.0,0.0,0.0设置对象 4 填充实体 0.9 边框 lw 2 fc 调色板 cb 85.58082从 设置对象 5 多边形4.0,2.0,0.0 到 2.0,2.0,0.0 到 2.0,2.0,3.0 到 3.0,2.0,3.5 到 4.0,2.0,3.0 到 4.0,2.0,0.0设置对象 5 填充实体 0.9 边框 lw 2 fc 调色板 cb 55.88219从 设置对象 6 多边形2.0,2.0,0.0 到 2.0,0.0,0.0 到 2.0,0.0,3.0 到 2.0,2.0,0.0设置对象 6 填充实体 0.9 边框 lw 2 fc 调色板 cb 85.25754从 设置对象 7 多边形2.0,2.0,0.0 到 2.0,0.0,3.0 到 2.0,2.0,3.0 到 2.0,2.0,0.0设置对象 7 填充实体 0.9 边框 lw 2 fc 调色板 cb 85.25754从 设置对象 8 多边形0.0,0.0,3.0 到 1.0,0.0,3.5 到 1.0,2.0,3.5 到 .0,2.0,3.0 到 .0,0.0,3.0设置对象 8 填充实心 0.9 边框 lw 2 fc 调色板 cb 128.1315从 设置对象 9 多边形2.0,0.0,3.0 到 2.0,2.0,3.0 到 1.0,2.0,3.5 到 1.0,0.0,3.5 到 2.0,0.0,3.0设置对象 9 填充实体 0.9 边框 lw 2 fc 调色板 cb 128.62192从 设置对象 10 多边形0.0,0.0,0.0 到 2.0,0.0,0.0 到 2.0,0.0,3.0 到 1.0,0.0,3.5 到 .0,0.0,3.0 到 .0,0.0,0.0设置对象 10 填充实体 0.9 边框 lw 2 fc 调色板 cb 100.545204从 设置对象 11 多边形2.0,0.0,0.0 到 2.0,2.0,0.0 到 2.0,2.0,3.0 到 2.0,0.0,3.0 到 2.0,0.0,0.0设置对象 11 填充实体 0.9 边框 lw 2 fc 调色板 cb 85.58082从 设置对象 12 多边形2.0,2.0,0.0 到 .0,2.0,0.0 到 .0,2.0,3.0 到 1.0,2.0,3.5 到 2.0,2.0,3.0 到 2.0,2.0,0.0设置对象 12 填充实体 0.9 边框 lw 2 fc 调色板 cb 55.88219从 设置对象 13 多边形0.0,2.0,0.0 到 .0,0.0,0.0 到 .0,0.0,3.0 到 .0,2.0,0.0设置对象 13 填充实体 0.9 边框 lw 2 fc 调色板 cb 85.25754从 设置对象 14 多边形0.0,2.0,0.0 到 .0,0.0,3.0 到 .0,2.0,3.0 到 .0,2.0,0.0设置对象 14 填充实心 0.9 边框 lw 2 fc 调色板 cb 85.25754
运行后的排序数据 python poly.py >poly_sorted.dat
从设置对象1多边形4.0,0.0,0.0 到 4.0,2.0,0.0 到 4.0,2.0,3.0 到 4.0,0.0,3.0 到 4.0,0.0,0.0设置对象 1 填充实体 0.9 边框 lw 2 fc 调色板 cb 85.58082从 设置对象 2 多边形4.0,2.0,0.0 到 2.0,2.0,0.0 到 2.0,2.0,3.0 到 3.0,2.0,3.5 到 4.0,2.0,3.0 到 4.0,2.0,0.0设置对象 2 填充实体 0.9 边框 lw 2 fc 调色板 cb 55.88219从 设置对象 3 多边形2.0,2.0,0.0 到 2.0,0.0,0.0 到 2.0,0.0,3.0 到 2.0,2.0,0.0设置对象 3 填充实心 0.9 边框 lw 2 fc 调色板 cb 85.25754从 设置对象 4 多边形2.0,2.0,0.0 到 2.0,0.0,3.0 到 2.0,2.0,3.0 到 2.0,2.0,0.0设置对象 4 填充实体 0.9 边框 lw 2 fc 调色板 cb 85.25754从 设置对象 5 多边形2.0,0.0,0.0 到 2.0,2.0,0.0 到 2.0,2.0,3.0 到 2.0,0.0,3.0 到 2.0,0.0,0.0设置对象 5 填充实心 0.9 边框 lw 2 fc 调色板 cb 85.58082从 设置对象 6 多边形2.0,2.0,0.0 到 .0,2.0,0.0 到 .0,2.0,3.0 到 1.0,2.0,3.5 到 2.0,2.0,3.0 到 2.0,2.0,0.0设置对象 6 填充实体 0.9 边框 lw 2 fc 调色板 cb 55.88219从 设置对象 7 多边形2.0,0.0,0.0 到 4.0,0.0,0.0 到 4.0,0.0,3.0 到 3.0,0.0,3.5 到 2.0,0.0,3.0 到 2.0,0.0,0.0设置对象 7 填充实体 0.9 边框 lw 2 fc 调色板 cb 100.545204从 设置对象 8 多边形0.0,2.0,0.0 到 .0,0.0,0.0 到 .0,0.0,3.0 到 .0,2.0,0.0设置对象 8 填充实心 0.9 边框 lw 2 fc 调色板 cb 85.25754从 设置对象 9 多边形4.0,0.0,3.0 到 4.0,2.0,3.0 到 3.0,2.0,3.5 到 3.0,0.0,3.5 到 4.0,0.0,3.0设置对象 9 填充实体 0.9 边框 lw 2 fc 调色板 cb 128.62192从 设置对象 10 多边形0.0,2.0,0.0 到 .0,0.0,3.0 到 .0,2.0,3.0 到 .0,2.0,0.0设置对象 10 填充实心 0.9 边框 lw 2 fc 调色板 cb 85.25754从 设置对象 11 多边形0.0,0.0,0.0 到 2.0,0.0,0.0 到 2.0,0.0,3.0 到 1.0,0.0,3.5 到 .0,0.0,3.0 到 .0,0.0,0.0设置对象 11 填充实体 0.9 边框 lw 2 fc 调色板 cb 100.545204从 设置对象 12 多边形2.0,0.0,3.0 到 3.0,0.0,3.5 到 3.0,2.0,3.5 到 2.0,2.0,3.0 到 2.0,0.0,3.0设置对象 12 填充实体 0.9 边框 lw 2 fc 调色板 cb 128.1315从 设置对象 13 多边形2.0,0.0,3.0 到 2.0,2.0,3.0 到 1.0,2.0,3.5 到 1.0,0.0,3.5 到 2.0,0.0,3.0设置对象 13 填充实体 0.9 边框 lw 2 fc 调色板 cb 128.62192从 设置对象 14 多边形0.0,0.0,3.0 到 1.0,0.0,3.5 到 1.0,2.0,3.5 到 .0,2.0,3.0 到 .0,0.0,3.0设置对象 14 填充实体 0.9 边框 lw 2 fc 调色板 cb 128.1315
I have a 3D model of a complete city, and would like to show an isometric view of those buildings. I use gnuplot polygons for this, since I don't think I can use pm3d for polygons with coordinates that aren't on a well defined grid. The polygons are displayed with a color corresponding to the average amount of solar irradiance they get. I also display the ground polygons as wireframe, mostly to set xrange, yrange and zrange automatically.
It looks okay from far away, but when you zoom in, you see that the depthorder of some polygons are wrong.
This is the CityGML model imported into SketchUp :
This is what comes out of Gnuplot :
Do you have any idea how I could display those polygons in the right order?
Something like this would be great, but it only seems to work with splot
.
Here is a Gnuplot file to see the problem (2 Buildings and 4 roofs) :
set style line 1 linecolor rgbcolor "#777777" linewidth 1
set style increment user
set palette file "-"
0.00000 0.23137 0.22353 0.64314
0.17990 0.47843 0.34510 0.71765
0.32010 0.34902 0.17647 0.55686
0.43990 0.40784 0.10980 0.36471
0.59010 0.46275 0.09020 0.16863
0.78000 0.86667 0.41569 0.24314
0.92990 0.92549 0.66667 0.33725
1.00000 0.97647 0.91765 0.82745
e
set cbrange [50:150]
set cbtics 25
set format cb "%.0f W/m²"
unset xtics
unset ytics
unset ztics
unset border
set colorbox
kzoom=1.0
phi=30.0
theta=60.0
set xyplane 0 # removes the offset of the xy plane
set view equal xyz # force equal units to all three axes
set view theta,phi,kzoom
set object 1 polygon from
2.0,0.0,3.0 to
3.0,0.0,3.5 to
3.0,2.0,3.5 to
2.0,2.0,3.0 to
2.0,0.0,3.0
set object 1 fill solid 0.9 border lw 2 fc palette cb 128.1315 front
set object 2 polygon from
4.0,0.0,3.0 to
4.0,2.0,3.0 to
3.0,2.0,3.5 to
3.0,0.0,3.5 to
4.0,0.0,3.0
set object 2 fill solid 0.9 border lw 2 fc palette cb 128.62192 front
set object 3 polygon from
2.0,0.0,0.0 to
4.0,0.0,0.0 to
4.0,0.0,3.0 to
3.0,0.0,3.5 to
2.0,0.0,3.0 to
2.0,0.0,0.0
set object 3 fill solid 0.9 border lw 2 fc palette cb 100.545204
set object 4 polygon from
4.0,0.0,0.0 to
4.0,2.0,0.0 to
4.0,2.0,3.0 to
4.0,0.0,3.0 to
4.0,0.0,0.0
set object 4 fill solid 0.9 border lw 2 fc palette cb 85.58082
set object 5 polygon from
4.0,2.0,0.0 to
2.0,2.0,0.0 to
2.0,2.0,3.0 to
3.0,2.0,3.5 to
4.0,2.0,3.0 to
4.0,2.0,0.0
set object 5 fill solid 0.9 border lw 2 fc palette cb 55.88219
set object 6 polygon from
2.0,2.0,0.0 to
2.0,0.0,0.0 to
2.0,0.0,3.0 to
2.0,2.0,0.0
set object 6 fill solid 0.9 border lw 2 fc palette cb 85.25754
set object 7 polygon from
2.0,2.0,0.0 to
2.0,0.0,3.0 to
2.0,2.0,3.0 to
2.0,2.0,0.0
set object 7 fill solid 0.9 border lw 2 fc palette cb 85.25754
set object 8 polygon from
0.0,0.0,3.0 to
1.0,0.0,3.5 to
1.0,2.0,3.5 to
0.0,2.0,3.0 to
0.0,0.0,3.0
set object 8 fill solid 0.9 border lw 2 fc palette cb 128.1315 front
set object 9 polygon from
2.0,0.0,3.0 to
2.0,2.0,3.0 to
1.0,2.0,3.5 to
1.0,0.0,3.5 to
2.0,0.0,3.0
set object 9 fill solid 0.9 border lw 2 fc palette cb 128.62192 front
set object 10 polygon from
0.0,0.0,0.0 to
2.0,0.0,0.0 to
2.0,0.0,3.0 to
1.0,0.0,3.5 to
0.0,0.0,3.0 to
0.0,0.0,0.0
set object 10 fill solid 0.9 border lw 2 fc palette cb 100.545204
set object 11 polygon from
2.0,0.0,0.0 to
2.0,2.0,0.0 to
2.0,2.0,3.0 to
2.0,0.0,3.0 to
2.0,0.0,0.0
set object 11 fill solid 0.9 border lw 2 fc palette cb 85.58082
set object 12 polygon from
2.0,2.0,0.0 to
0.0,2.0,0.0 to
0.0,2.0,3.0 to
1.0,2.0,3.5 to
2.0,2.0,3.0 to
2.0,2.0,0.0
set object 12 fill solid 0.9 border lw 2 fc palette cb 55.88219
set object 13 polygon from
0.0,2.0,0.0 to
0.0,0.0,0.0 to
0.0,0.0,3.0 to
0.0,2.0,0.0
set object 13 fill solid 0.9 border lw 2 fc palette cb 85.25754
set object 14 polygon from
0.0,2.0,0.0 to
0.0,0.0,3.0 to
0.0,2.0,3.0 to
0.0,2.0,0.0
set object 14 fill solid 0.9 border lw 2 fc palette cb 85.25754
splot "-" with lines notitle ls 1, NaN notitle palette
2.0 0.0 0.0
2.0 2.0 0.0
4.0 2.0 0.0
4.0 0.0 0.0
2.0 0.0 0.0
0.0 0.0 0.0
0.0 2.0 0.0
2.0 2.0 0.0
2.0 0.0 0.0
0.0 0.0 0.0
e
pause mouse
Thanks for the interest!
I could not find an option to convince gnuplot that it should set the depthorder of the polygon objects automatically. The only way I found was to already define the objects in the correct order. Then gnuplot draws each of them on top of the previous one which leads to the expected result.
Taking your example polygons after removing the front
specifiers, this approach changes the original picture from this one:
to this one (after removing front
):
to this one (after sorting):
I think the third picture is what you want.
I used a python script to sort the polygons, which basically does:
- Read all polygons from a file "poly_raw.dat". The file must start with a
set object x polygon from
line. - Like gnuplot with
set view theta, phi
, it rotates the polygons around x and z axis (temporarily, just for sorting). - It sorts the polygons with respect to the new y-axis. This should be the axis which is orthogonal to the screen.
- It updates the gnuplot object IDs, i.e. the
x
inset object x polygon
. - It prints the sorted polygon data including the
set object
lines.
Notice that this approach only works for static pictures. It does not work if you want to interactively rotate the picture.
Also notice, if the approach does not work for your full data file, I have probably messed up the rotation matrix or the axis assignment :)
I attach the python script, the plot file, and the data files "plot_raw.dat" and "plot_sorted.dat" for reference.
# poly.py
from math import cos, sin, pi
from re import sub, match, findall
class Polygon:
def __init__(self):
self.firstLine = ""
self.points = []
self.lastLine = ""
def __str__(self):
pointStrings = [",".join(map(str,point)) for point in self.points]
s = ""
s += self.firstLine
s += " to \
".join(pointStrings)
s += "
"
s += self.lastLine
return s
def readObjectFromFile(self, f, firstObjectLine):
self.firstLine = firstObjectLine
line = f.readline()
while not match("set",line):
coordinates = findall("[d.]+", line)
coordinates = tuple(float(x) for x in coordinates)
self.points.append(coordinates)
line = f.readline()
self.lastLine = line
return self
def meanAfterRotation(self, theta, phi):
cx = 0.0
cy = 0.0
cz = 0.0
theta = theta*pi/180.0
phi = phi*pi/180.0
for point in self.points:
x,y,z = point
x,y,z = (x, y*cos(theta) - z*sin(theta), y*sin(theta) + z*cos(theta))
x,y,z = (x*cos(phi) - y*sin(phi), x*sin(phi) + y*cos(phi), z)
cx, cy, cz = (cx + x, cy + y, cz + z)
n = len(self.points)
return (cx/n, cy/n, cz/n)
def setPosition(self, posIndex):
self.firstLine = sub("(d+)", str(posIndex), self.firstLine, 1)
self.lastLine = sub("(d+)", str(posIndex), self.lastLine, 1)
polygons = []
with open("poly_raw.dat") as f:
line = f.readline()
while line:
if line.strip() != "":
polygons.append(Polygon().readObjectFromFile(f,line))
line = f.readline()
polygons.sort(key = lambda x: x.meanAfterRotation(60,30)[1], reverse = True)
pos = 1
for p in polygons:
p.setPosition(pos)
pos += 1
for p in polygons:
print(p)
The gnuplot script:
# poly.plt, gnuplot 4.6
# Does not work when interactively rotating the picture.
set style line 1 linecolor rgbcolor "#777777" linewidth 1
set style increment user
set palette file "-"
0.00000 0.23137 0.22353 0.64314
0.17990 0.47843 0.34510 0.71765
0.32010 0.34902 0.17647 0.55686
0.43990 0.40784 0.10980 0.36471
0.59010 0.46275 0.09020 0.16863
0.78000 0.86667 0.41569 0.24314
0.92990 0.92549 0.66667 0.33725
1.00000 0.97647 0.91765 0.82745
e
set cbrange [50:150]
set cbtics 25
set format cb "%.0f W/m²"
unset xtics
unset ytics
unset ztics
unset border
set colorbox
kzoom=1.0
phi=30.0
theta=60.0
set xyplane 0 # removes the offset of the xy plane
set view equal xyz # force equal units to all three axes
set view theta,phi,kzoom
#load "poly_raw.dat"
load "poly_sorted.dat"
set terminal png
#set output "raw.png"
set output "sorted.png"
splot "-" with lines notitle ls 1, NaN notitle palette
2.0 0.0 0.0
2.0 2.0 0.0
4.0 2.0 0.0
4.0 0.0 0.0
2.0 0.0 0.0
0.0 0.0 0.0
0.0 2.0 0.0
2.0 2.0 0.0
2.0 0.0 0.0
0.0 0.0 0.0
e
The unsorted polygon data after removing the front
specifiers:
set object 1 polygon from
2.0,0.0,3.0 to
3.0,0.0,3.5 to
3.0,2.0,3.5 to
2.0,2.0,3.0 to
2.0,0.0,3.0
set object 1 fill solid 0.9 border lw 2 fc palette cb 128.1315
set object 2 polygon from
4.0,0.0,3.0 to
4.0,2.0,3.0 to
3.0,2.0,3.5 to
3.0,0.0,3.5 to
4.0,0.0,3.0
set object 2 fill solid 0.9 border lw 2 fc palette cb 128.62192
set object 3 polygon from
2.0,0.0,0.0 to
4.0,0.0,0.0 to
4.0,0.0,3.0 to
3.0,0.0,3.5 to
2.0,0.0,3.0 to
2.0,0.0,0.0
set object 3 fill solid 0.9 border lw 2 fc palette cb 100.545204
set object 4 polygon from
4.0,0.0,0.0 to
4.0,2.0,0.0 to
4.0,2.0,3.0 to
4.0,0.0,3.0 to
4.0,0.0,0.0
set object 4 fill solid 0.9 border lw 2 fc palette cb 85.58082
set object 5 polygon from
4.0,2.0,0.0 to
2.0,2.0,0.0 to
2.0,2.0,3.0 to
3.0,2.0,3.5 to
4.0,2.0,3.0 to
4.0,2.0,0.0
set object 5 fill solid 0.9 border lw 2 fc palette cb 55.88219
set object 6 polygon from
2.0,2.0,0.0 to
2.0,0.0,0.0 to
2.0,0.0,3.0 to
2.0,2.0,0.0
set object 6 fill solid 0.9 border lw 2 fc palette cb 85.25754
set object 7 polygon from
2.0,2.0,0.0 to
2.0,0.0,3.0 to
2.0,2.0,3.0 to
2.0,2.0,0.0
set object 7 fill solid 0.9 border lw 2 fc palette cb 85.25754
set object 8 polygon from
0.0,0.0,3.0 to
1.0,0.0,3.5 to
1.0,2.0,3.5 to
0.0,2.0,3.0 to
0.0,0.0,3.0
set object 8 fill solid 0.9 border lw 2 fc palette cb 128.1315
set object 9 polygon from
2.0,0.0,3.0 to
2.0,2.0,3.0 to
1.0,2.0,3.5 to
1.0,0.0,3.5 to
2.0,0.0,3.0
set object 9 fill solid 0.9 border lw 2 fc palette cb 128.62192
set object 10 polygon from
0.0,0.0,0.0 to
2.0,0.0,0.0 to
2.0,0.0,3.0 to
1.0,0.0,3.5 to
0.0,0.0,3.0 to
0.0,0.0,0.0
set object 10 fill solid 0.9 border lw 2 fc palette cb 100.545204
set object 11 polygon from
2.0,0.0,0.0 to
2.0,2.0,0.0 to
2.0,2.0,3.0 to
2.0,0.0,3.0 to
2.0,0.0,0.0
set object 11 fill solid 0.9 border lw 2 fc palette cb 85.58082
set object 12 polygon from
2.0,2.0,0.0 to
0.0,2.0,0.0 to
0.0,2.0,3.0 to
1.0,2.0,3.5 to
2.0,2.0,3.0 to
2.0,2.0,0.0
set object 12 fill solid 0.9 border lw 2 fc palette cb 55.88219
set object 13 polygon from
0.0,2.0,0.0 to
0.0,0.0,0.0 to
0.0,0.0,3.0 to
0.0,2.0,0.0
set object 13 fill solid 0.9 border lw 2 fc palette cb 85.25754
set object 14 polygon from
0.0,2.0,0.0 to
0.0,0.0,3.0 to
0.0,2.0,3.0 to
0.0,2.0,0.0
set object 14 fill solid 0.9 border lw 2 fc palette cb 85.25754
The sorted data after running python poly.py > poly_sorted.dat
set object 1 polygon from
4.0,0.0,0.0 to
4.0,2.0,0.0 to
4.0,2.0,3.0 to
4.0,0.0,3.0 to
4.0,0.0,0.0
set object 1 fill solid 0.9 border lw 2 fc palette cb 85.58082
set object 2 polygon from
4.0,2.0,0.0 to
2.0,2.0,0.0 to
2.0,2.0,3.0 to
3.0,2.0,3.5 to
4.0,2.0,3.0 to
4.0,2.0,0.0
set object 2 fill solid 0.9 border lw 2 fc palette cb 55.88219
set object 3 polygon from
2.0,2.0,0.0 to
2.0,0.0,0.0 to
2.0,0.0,3.0 to
2.0,2.0,0.0
set object 3 fill solid 0.9 border lw 2 fc palette cb 85.25754
set object 4 polygon from
2.0,2.0,0.0 to
2.0,0.0,3.0 to
2.0,2.0,3.0 to
2.0,2.0,0.0
set object 4 fill solid 0.9 border lw 2 fc palette cb 85.25754
set object 5 polygon from
2.0,0.0,0.0 to
2.0,2.0,0.0 to
2.0,2.0,3.0 to
2.0,0.0,3.0 to
2.0,0.0,0.0
set object 5 fill solid 0.9 border lw 2 fc palette cb 85.58082
set object 6 polygon from
2.0,2.0,0.0 to
0.0,2.0,0.0 to
0.0,2.0,3.0 to
1.0,2.0,3.5 to
2.0,2.0,3.0 to
2.0,2.0,0.0
set object 6 fill solid 0.9 border lw 2 fc palette cb 55.88219
set object 7 polygon from
2.0,0.0,0.0 to
4.0,0.0,0.0 to
4.0,0.0,3.0 to
3.0,0.0,3.5 to
2.0,0.0,3.0 to
2.0,0.0,0.0
set object 7 fill solid 0.9 border lw 2 fc palette cb 100.545204
set object 8 polygon from
0.0,2.0,0.0 to
0.0,0.0,0.0 to
0.0,0.0,3.0 to
0.0,2.0,0.0
set object 8 fill solid 0.9 border lw 2 fc palette cb 85.25754
set object 9 polygon from
4.0,0.0,3.0 to
4.0,2.0,3.0 to
3.0,2.0,3.5 to
3.0,0.0,3.5 to
4.0,0.0,3.0
set object 9 fill solid 0.9 border lw 2 fc palette cb 128.62192
set object 10 polygon from
0.0,2.0,0.0 to
0.0,0.0,3.0 to
0.0,2.0,3.0 to
0.0,2.0,0.0
set object 10 fill solid 0.9 border lw 2 fc palette cb 85.25754
set object 11 polygon from
0.0,0.0,0.0 to
2.0,0.0,0.0 to
2.0,0.0,3.0 to
1.0,0.0,3.5 to
0.0,0.0,3.0 to
0.0,0.0,0.0
set object 11 fill solid 0.9 border lw 2 fc palette cb 100.545204
set object 12 polygon from
2.0,0.0,3.0 to
3.0,0.0,3.5 to
3.0,2.0,3.5 to
2.0,2.0,3.0 to
2.0,0.0,3.0
set object 12 fill solid 0.9 border lw 2 fc palette cb 128.1315
set object 13 polygon from
2.0,0.0,3.0 to
2.0,2.0,3.0 to
1.0,2.0,3.5 to
1.0,0.0,3.5 to
2.0,0.0,3.0
set object 13 fill solid 0.9 border lw 2 fc palette cb 128.62192
set object 14 polygon from
0.0,0.0,3.0 to
1.0,0.0,3.5 to
1.0,2.0,3.5 to
0.0,2.0,3.0 to
0.0,0.0,3.0
set object 14 fill solid 0.9 border lw 2 fc palette cb 128.1315
这篇关于Gnuplot:尊重 Gnuplot 3d 多边形的深度顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!