使用pst-solides3d
我可以绘制以下半环面(沿平面 y = 0 切割的完整环面):
\documentclass{article}
\usepackage{pst-solides3d}
\begin{filecontents}{process_ghostscript.txt}
\end{filecontents}
\pagestyle{empty}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psset{
viewpoint=10 10 10,lightsrc=viewpoint,
Decran=25,
solidmemory
}
\psSolid[%
object=tore,r0=1,r1=3,
plansepare={[0 1 0 0]},% Plane y = 0
%plansepare={[-1 0 0 0]},% Plane x = 0
fillcolor=red!50!white,incolor=green,
name=torusA,
grid,ngrid=15 30,
hollow=true,
action=draw**
](0,0,0)%
\axesIIID(0,0,0)(1,1,1)
\end{pspicture}
\end{document}
沿平面 x = 0 切割可以通过将切割平面(或plansepare
)替换为plansepare={[-1 0 0 0]}
:
但是,我想将其结合起来,沿 x = 0 和 y = 0 两个平面切割圆环,只留下四分之一圆环。我遵循了pst-solides3d
文档根据切割空心固体, 具体来说第二片及其在金字塔内的插入其中一个对象(金字塔)被切片两次。我以为这会起作用,但事实并非如此:
\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\begin{pspicture}(-5,-5)(5,5)
\psset{
viewpoint=10 10 10,lightsrc=viewpoint,
Decran=25,
solidmemory
}
% Create the first half-torus
\psSolid[%
object=tore,r0=1,r1=3,
plansepare={[0 1 0 0]},% Plane y = 0
fillcolor=red!50!white,incolor=green,
name=torusA,
grid,ngrid=15 30,
hollow=true,
action=none
](0,0,0)%
% Load torusA0 and slice it gain
\psSolid[%
object=load,load=torusA0,
plansepare={[-1 0 0 0]},% Plane x = 0
fillcolor=red!50!white,incolor=green,
name=torusB,
grid,ngrid=15 30,
hollow=true,
action=draw**
](0,0,0)%
\axesIIID(0,0,0)(1,1,1)
\end{pspicture}
\end{document}
而且,hollow=true
似乎被忽略了。
笔记:可以通过以下参数曲面方程获得四分之一圆环
\defFunction[algebraic]{torus}(u,v)
{(3 + 1*cos(u))*cos(v)}% x
{(3 + 1*cos(u))*sin(v)}% y
{1*sin(u)}% z
\psSolid[
object=surfaceparametree,grid,
base=0 2 pi mul neg pi 2 div pi,
fillcolor=red!50!white,incolor=green,
function=torus,
ngrid=15 30
](0,0,0)
然而,这不是我想要的。上面提到的平面切割很简单/普通(沿轴线)。一般来说,我不会这样切割,而是沿着某个通用平面 ax + by + cz + d = 0 切割。