pst-solides-3d 中的表面出现 Ghostscript 错误

pst-solides-3d 中的表面出现 Ghostscript 错误

我发现非常酷pst-固体-3d包裹。

代码

\documentclass{article}

\usepackage{pstricks}
\usepackage{pst-solides3d}


\begin{document}

    \begin{pspicture}(0,0)(3,5)

    \psset{viewpoint=60 80 30 rtp2xyz,Decran=60,lightsrc=viewpoint}

    \defFunction{g}(u,v){sin(u)*sin(t)}{u}{sin(u)*cos(t)}

    \psSolid[object=surfaceparametree,linewidth=0.5\pslinewidth, base=0 pi 0 pi,fillcolor=yellow!50,incolor=green!50, function=g, ngrid=60 0.4]%

    \end{pspicture}

\end{document}

应该生成表面 g(u,v) 的绘图,但是当我编译时,我收到来自 ghoscript 的错误:

$latex test.tex
[...]
Output written on test.dvi (1 page, 5284 bytes).
Transcript written on test.log.
$dvips test.dvi
[...]
$ps2pdf test.ps
Error: /typecheck in --sin--
Operand stack:
   S   --nostringval--   --nostringval--
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1910   1   3   %oparray_pop   1909   1   3   %oparray_pop   1893   1   3   %oparray_pop   1787   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   1   1   60   --nostringval--   %for_pos_int_continue   1   1   7   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1158/1684(ro)(G)--   --dict:0/20(G)--   --dict:87/200(L)--   --dict:739/1012(L)--   --dict:175/300(L)--   --dict:38/200(L)--   --dict:184/200(L)--   --dict:739/1012(L)--   --dict:14/20(L)--   --dict:2/3(L)--
Current allocation mode is local
Last OS error: 2
Current file position is 359102
GPL Ghostscript RELEASE CANDIDATE 9.00: Unrecoverable error, exit code 1

ps文件也打不开,dvi文件是空的。

这个可怕的错误是从哪里来的?

答案1

您的代码有两个问题:

  1. 您的函数可以用代数符号表示,也可以使用逆波兰表示法(RPN)。后者(RPN)是默认值。如果您想要前者,则需要使用 指定它\defFunction[algebraic]{..}...。您已在代数符号中提供了它,而没有该选项。

  2. 您的函数使用参数uv来确定的每个坐标g。换句话说,的 (x,y,z)g是根据u和指定的。但是,您的定义中的 x(u,v) 和 z(u,v) 都是根据和v定义的。ut

考虑到这两点,你需要

\defFunction[algebraic]{g}(u,v){sin(u)*sin(v)}{u}{sin(u)*cos(v)}

pst-solides3d 绘制 3D 表面

相关内容