我发现非常酷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
您的代码有两个问题:
您的函数可以用代数符号表示,也可以使用逆波兰表示法(RPN)。后者(RPN)是默认值。如果您想要前者,则需要使用 指定它
\defFunction[algebraic]{..}...
。您已在代数符号中提供了它,而没有该选项。您的函数使用参数
u
和v
来确定的每个坐标g
。换句话说,的 (x,y,z)g
是根据u
和指定的。但是,您的定义中的 x(u,v) 和 z(u,v) 都是根据和v
定义的。u
t
考虑到这两点,你需要
\defFunction[algebraic]{g}(u,v){sin(u)*sin(v)}{u}{sin(u)*cos(v)}