【发布时间】:2020-08-06 20:24:07
【问题描述】:
绘制一个球体with pm3d 工作正常。
但是,当我想给出一个偏移量时,我会得到一些我不理解的工件。
任何想法为什么我在通过添加一些数字来移动坐标时会在我的球体中出现一个“黑洞”?
使用 gnuplot 5.2.8 创建
代码:
### plotting artifact with splot and pm3d
reset session
set view equal xyz
set view 45,45, 2
unset tics
unset colorbox
unset key
set margins 0,0,0,0
unset border
set style fill solid 1.0 noborder
set pm3d depthorder noborder
set pm3d lighting specular 0.5
# Create a sphere prototype dataset
set parametric
set isosamples 25
set samples 25
set urange [-pi/2:pi/2]
set vrange [0:2*pi]
Radius = 1
set table $Sphere
splot Radius*cos(u)*cos(v), Radius*cos(u)*sin(v), Radius*sin(u)
unset table
unset parametric
set palette defined (0 "#ff0000", 1 "#ff0000")
set view 153, 90
splot $Sphere u 1:2:3 w pm3d
pause -1 "Press OK to see the next plot"
splot $Sphere u ($1+1.0):($2+2.0):($3+3.0) w pm3d
### end of code
结果:
带偏移量:
【问题讨论】:
-
对不起,你是对的。在那种情况下,我不知道原因是什么。我将删除我的答案并考虑更多。
-
我怀疑可能存在一些小数字和四舍五入的东西。
$Sphere包含一些接近于零的极小数字,例如+1e-17或-1e-32。也许正因为如此,如果添加(相对)大的数字,则不会绘制最后的刻面,这会导致这个“黑洞”。但我仍然无法解释,也不知道如何解决。 -
这似乎是光照模型的镜面反射组件中的一个故障。我将不得不进一步调查。
-
解决方法:在生成球体时修剪参数参数u的限制。这可以防止到达两极的四边形完全退化:
epsilon=0.0001; set urange [epsilon - pi/2 : pi/2 - epsilon] -
谢谢你,Ethan,这很有帮助。不再有“黑洞”。你想把这个作为答案吗?
标签: gnuplot