我有一个由x,y,z坐标给出的点列表。我想在计算机上绘制这些点。我已经设法用gnuplot和python库matplotlib分别完成了这个。然而,对于这两种解决方案,似乎很难改变观察点,或者完成3D点云投影到2D屏幕的点。
1)有没有简单的方法,最好是连续地在gnuplot(splot命令)或matplotlib(绘图命令)中移动观察点?
2)有哪些其他库可以轻松完成这项任务?
编辑:我想移动观看点(比如第一人称射击游戏中的玩家),而不是改变视角。
答案 0 :(得分:1)
当你改变视角时,它就像把头移到一个等距的外壳上,连续看到图像/屏幕/物体的中心。
你所说的是在x-y平面上移动你的头部固定前方,以便内容(屏幕/物体)从你的视线中移出。 Gnuplot
set origin
喜欢
set origin -0.25,0
splot exp(-x**2)*exp(-y**2)*sin(x)**2 with pm3d notitle
只需移动相机即可。
你所拥有的意味着(我认为)与你的播放器一起向左(或向右或跳跃或......),但这不仅会改变观察点,还会改变观看的内容。您可以使用xrange
和yrange
:
splot [-5:15] exp(-x**2)*exp(-y**2)*sin(x)**2 with pm3d notitle
当然,x / y范围的变化取决于您在Gnuplot
之外计算的当前视角。
答案 1 :(得分:0)
不,gnuplot不能真正移动观察点,因为观察点处于无限远的原因:您可以做的就是设置角度和放大率(使用set view
)和观察窗口内的偏移量(set origin
)。这意味着,您可以在无限远的球体上移动观察点,但不能在您正在绘制的点之间移动。
(问题2是一个偏离主题的软件建议,但你正在寻找一个渲染软件,如paraview)