如何在gnuplot下可视化曲面的交集

时间:2014-06-19 11:07:40

标签: gnuplot intersection

是否可以用gnuplot可视化多个表面的交集:

set parametric
set hidden3d
set samples 25
set isosamples 25

splot u,v,0 

replot u,0,v

我在这个例子中试图绘制的两个表面是两个平面。如何可视化这两个平面的交点?

1 个答案:

答案 0 :(得分:2)

在数值上,这可以通过设置样本并定义相应的限制区间来完成。例如,假设您想要在间隔x = [-1:1],y = [-1:1]和z = [-1:1]中绘制平面,并在每个方向上使用101个样本:

set parametric ; set hidden3d
set isosamples 101
set xrange [-1:1]
set yrange [-1:1]
set zrange [-1:1]

splot u,v,0, u,0,v

enter image description here

现在,101个样本中的每一个对应于具有宽度(1 - (-1))/(101-1)= 0.02的间隔。如果我将平面之间的距离约束为低于该阈值的一半用于绘制点,那就是abs(u-u)&lt; 0.01,abs(v-0)&lt; 0.01和abs(0-v)<0.01。 0.01对于每个方向的每个区间,我都会得到一个采样点:

set parametric ; set hidden3d
set isosamples 101
set xrange [-1:1]
set yrange [-1:1]
set zrange [-1:1]

splot (abs(u-u) < 0.01 ? u : 1/0), \
      (abs(v-0.) < 0.01 ? v : 1/0), \
      (abs(v-0.) < 0.01 ? 0 : 1/0)

其中? something : 1/0表示如果?之前的条件满足,则something忽略该点,然后我有交集:

enter image description here