GNUPlot:动画由三个点定义的平面

时间:2014-09-24 16:14:20

标签: gnuplot

所以我需要绘制由三个点定义的 plane (因为它们必须是FLAT),这三个点都来自我的等式。我可以重新定义代码,使得三点之间有一个空格。我选择不这样做。我刚刚添加了评论,以便明确划分点的位置。他们不是真的在那里。

# surface 1
   1.000          0.000          0.000
 -46.777         -0.702         -1.692
   0.000          3.000          5.500
# surface 2
   0.998          0.030          0.055
 -46.451         -2.099         -5.068
  -0.468          2.993          5.483
# surface 3
   0.991          0.060          0.110
 -45.804         -3.471         -8.400
  -0.932          2.972          5.432
# surface 4
   0.979          0.089          0.164
 -44.842         -4.803        -11.659
  -1.390          2.937          5.348
# surface 5
   0.963          0.119          0.217
 -43.574         -6.079        -14.816
  -1.839          2.889          5.232
#... and so on

现在我可以使用此代码只绘制一个表面

set dgrid3d 10,10
set style data lines
set pm3d 
i=0
splot '5surf' every ::i::(i+2) pal

但是当我把它插入do循环

n =         1000
unset key

set terminal gif size 800,600 crop
outtmpl = 'pic/output%07d.gif'

set dgrid3d 10,10
set style data lines
set pm3d 

do for [i=0:n:3] {
set output sprintf(outtmpl, i)
splot '5surf' every ::i::(i+2) pal
print i
}
set output

我得到了弯曲的表面,这是完全错误的。 (双关语)

根据我的分析,表面看起来有点像旋转。


编辑:我把dgrid3d扔出了窗外。 Filledcurves不起作用。我能够用这些点制作一个正方形

1 1 4.8
-1 1 5.6
-1 -1 2.4
1 -1 1.6
1 1 4.8

使用polygon,但我无法从文件中读取。


最后编辑:如果有人磕磕绊绊地想知道我是如何使用原来的三个点找到四个点的,那就是找到包含三个点的平面方程并插入(\ pm 1,\ pm 1,z)在那里。求解z并考虑所有四种情况。一个基本的计算问题,真的

1 个答案:

答案 0 :(得分:1)

使用方块的点数,您还必须插入一个空行以使pm3d正常工作:

surface.dat

-1 -1 2.4
-1 1 5.6

1 -1 1.6
1 1 4.8

不是,对于两个块,y值总是以相同的顺序-1, 1。用

绘制
set pm3d
splot 'surface.dat' 

enter image description here

如果要从一个文件中放置多个曲面,现在可以使用两个空行分隔两个曲面,然后可以使用index访问这些曲面:

surfaces.dat

-1 -1 2.4
-1 1 5.6

1 -1 1.6
1 1 4.8


-1 -1 1.4
-1 1 4.6

1 -1 0.6
1 1 3.8

您可以使用stats来计算块数:

stats 'surfaces.dat' nooutput
set pm3d
do for [i=0:STATS_blocks - 1] {
    splot 'surfaces.dat' index i
}