使用 pst-solides3d 多次切割物体

使用 pst-solides3d 多次切割物体

使用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 切割。

相关内容