使用 pst-3Dplot 绘制 3D 图形

使用 pst-3Dplot 绘制 3D 图形

我正在尝试使用该包在 3D 中绘制一个简单的数学函数pst-3dplot。该函数是z = 1/(1+a*exp(-b*y)) * (c * (1 - exp(d*x)) * (1 - exp(e*(x-f))))

我尝试了以下操作:

\def\PsEuler{2.71828182846}
\psset{xunit=0.5cm,yunit=0.5cm}
\begin{pspicture}(-5,0)(10,10)
    \psset{Beta=15,nameX=$x_1$,nameY=$x_2$,nameZ=$x_3$}
    \pstThreeDCoor[IIIDticks,IIIDlabels,xMin=0,xMax=120,yMin=0,yMax=1,zMin=0,zMax=12,Dx=1,Dy=0.01,Dz=1]
    \infixtoRPN{ 1/(1+300*\PsEuler^(-10*y)) * (11.06 * (1 - \PsEuler^(-0.214*x)) * (1 - \PsEuler^(0.02667*(x-113)))) }
    \psplotThreeD[yPlotpoints=50,xPlotpoints=50,hiddenLine=true](0,120)(0,1){\RPN}
\end{pspicture}

该函数在 y 轴上正确显示在 [0,1] 之间,但我没有成功拉伸 y 轴。我在 xz 轴上都有 10 个单位,在 y 轴上都有 1 个单位,函数在这个方向上看起来非常“破碎”。我尝试了Dy = 0.1以“拉伸”y 轴并绘制 10 个单位的值0.1。它不起作用。如果我设置

\psplotThreeD[...](0,120)(0,10){\RPN} 

它在 y 轴上从 0 到 1(步长 0.1)绘制函数,但函数绘制不正确(实际上结果是 y 轴上 [0,10] 之间的函数,但 y 尺度不正确)。

我使用 Matlab 仔细检查了该函数,发现其绘制正确。如有任何建议,我们将不胜感激。

答案1

如果您想要隐藏线,则更有意义pst-solides3d。为了获得更好的视图,我选择 10*x 和 y/10 作为坐标。函数的 x/y 值除以/乘以得到 (0...120)(0...1) 间隔

\documentclass[pstricks]{standalone}
\usepackage{pst-solides3d}
\begin{document}

\psset{viewpoint=30 50 10 rtp2xyz,Decran=15}

\begin{pspicture}(-6.5,-5)(5,7)
\psSurface[algebraic,ngrid=0.2 0.2 ](0,0)(12,10){
     1/(1+300*Euler^(-y))*(11.06*(1 -Euler^(-2.14*x))*(1-Euler^(0.02667*(10*x-113))))}
\end{pspicture}

\end{document}

在此处输入图片描述

与轴相同:

\documentclass[pstricks]{standalone}
\usepackage{pst-solides3d}
\begin{document}
\psset{viewpoint=40 60 10 rtp2xyz,Decran=15}

\begin{pspicture}(-6,-5)(5,6)
\psSurface[algebraic,ngrid=0.25 0.25,axesboxed,Zmax=10 ](0,0)(12,10){
     1/(1+300*Euler^(-y))*(11.06*(1 -Euler^(-2.14*x))*(1-Euler^(0.02667*(10*x-113))))}
\end{pspicture}

\end{document}

在此处输入图片描述

相关内容