pstricks、psSolid 和 pstODE

pstricks、psSolid 和 pstODE

使用\psSolid我可以创建函数图形的漂亮图片,比如 f(x,y)=x坐标是。

使用

\pstODE[algebraic,algebraicOutputFormat]{solution}{ "x" |"y" | f("x","y") }{...

我可以求解(高维)ODE并在 f 的图上获得三维“曲线”。

listplotThreeD{solution}可以在图表上直观地看到这条 3D 曲线。

然而,这条曲线通常不会位于 创建的图形上 \psSolid。例如,当改变 中的视点时, 的输出ListplotThreeD不会改变\psSolid

有办法解决这个问题吗?

答案1

pst-solides3dpst-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有效。

相关内容