在一个实体内绘制另一个实体

在一个实体内绘制另一个实体

我想生成几个实体,一个在另一个里面。我知道我可以这样做,pst-solides3d因为它是文档中的第一张图片。我的目的是在另一个椭圆体内创建一个椭圆体,这真的很简单

\documentclass{minimal}
\usepackage{pst-solides3d}
\begin{document}
\begin{pspicture}(-5,-4)(5,6)
\psset[pst-solides3d]{viewpoint=20 20 -10 rtp2xyz,Decran=15,lightsrc=viewpoint}
\defFunction{esfera2}(u,v)
{u cos v sin mul 5 mul}
{u sin v sin mul 4 mul}
{v cos           3 mul}
\defFunction{esfera1}(u,v)
{u cos v sin mul 3 mul}
{u sin v sin mul 2 mul}
{v cos           1 mul}
\psSolid[
    object=surfaceparametree,
    base=0 180 0 180,
    incolor=red,
    function=esfera1,
    linewidth=0.5\pslinewidth,
    ngrid=40
]%
\psSolid[
    object=surfaceparametree,
    base=0 180 0 180,
    incolor=white,
    opacity=0.5,
    function=esfera2,
    linewidth=0.5\pslinewidth,
    ngrid=40
]%
\end{pspicture}
\end{document}

我的代码产生以下结果

错误嵌套的椭圆体

但我的目标是让它看起来像下面的图片(如果你还没有看到的话)

Solides3d 手册封面图片

我认为部分问题可能是我的实体是参数化曲面。有什么想法吗?

答案1

您必须构建一个融合对象(收集所有多边形表面),当然,还要旋转该对象以查看内部:

\documentclass{minimal}
\usepackage{pst-solides3d}
\begin{document}
\begin{pspicture}[solidmemory](-5,-4)(5,6)
\psset{viewpoint=20 -20 10 rtp2xyz,Decran=15,lightsrc=viewpoint,
  linewidth=0.1pt,action=none}
\defFunction{esfera2}(u,v)
  {u cos v sin mul 5 mul}
  {u sin v sin mul 4 mul}
  {v cos           3 mul}
\defFunction{esfera1}(u,v)
  {u cos v sin mul 3 mul}
  {u sin v sin mul 2 mul}
  {v cos           1 mul}
\psSolid[
    object=surfaceparametree,
    base=0 180 0 180,
    incolor=red,
    function=esfera1,
    ngrid=20,name=esfera1
]%
\psSolid[
    object=surfaceparametree,
    base=0 180 0 180,
    incolor=white,
    function=esfera2,
    ngrid=40,name=esfera2
]%
\psSolid[object=fusion,base=esfera1 esfera2,action=draw**]
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容