使用\psSolid
我可以创建函数图形的漂亮图片,比如 f(x,y)=x坐标是。
使用
\pstODE[algebraic,algebraicOutputFormat]{solution}{ "x" |"y" | f("x","y") }{...
我可以求解(高维)ODE并在 f 的图上获得三维“曲线”。
我listplotThreeD{solution}
可以在图表上直观地看到这条 3D 曲线。
然而,这条曲线通常不会位于 创建的图形上
\psSolid
。例如,当改变 中的视点时, 的输出ListplotThreeD
不会改变\psSolid
。
有办法解决这个问题吗?
答案1
pst-solides3d
和 pst-3dplot
可以一起使用,但宏使用不同的坐标系。您可以\listplotIIID
按照 Alexander 提到的方式定义一个 on:
\makeatletter
\def\listplotIIID{\def\pst@par{}\pst@object{listplotIIID}}
\def\listplotIIID@i#1{%
\@nameuse{beginplot@\psplotstyle}%
\addto@pscode{%
/viewpointXYZ {\pst@solides@viewpoint} def
/Decran \pst@solides@Decran\space def % distance de l'ecran
viewpointXYZ /ZpointVue ED /YpointVue ED /XpointVue ED
/THETA {YpointVue XpointVue atan} bind def
/PHI {ZpointVue XpointVue dup mul YpointVue dup mul add sqrt atan} bind def
/Dobs {XpointVue dup mul YpointVue dup mul add ZpointVue dup mul add sqrt} bind def
XpointVue YpointVue ZpointVue /viewpoint defpoint3d
/XYZ [#1] def
/@tabXYZ [
0 3 XYZ length 3 sub {/i exch def
XYZ i get
XYZ i 1 add get
XYZ i 2 add get
3dto2d
\pst@number\psunit mul exch
\pst@number\psunit mul exch
} for
] bind def
[ @tabXYZ aload pop
}%
\@nameuse{endplot@\psplotstyle}}%
\makeatother
数据必须是包含 3d 记录的文件,例如
1 2 3
4 5 1
2.1 0 1.1
...
当前的视口设置pst-solides3d
有效。