实体与曲线物体融合问题

实体与曲线物体融合问题

我需要多次绘制由融合操作构建的自定义对象。对象组合涉及曲线类型对象,第一次插入后成功绘制。但尝试添加第二个时,空白屏幕(我使用在线 latex 编辑器)清除了整个图片。我的怀疑来自曲线对象融合,但我不确定。

\documentclass{article}
\usepackage{pst-solides3d}

\begin{document}
\begin{center}
\begin{pspicture}[showgrid=false](-0.5,-3.7)(8.5,6)
\psset{viewpoint=20 0 40 rtp2xyz,lightsrc=20 45 50 rtp2xyz,Decran=30}
\psset{solidmemory}

\makeatletter
\newcommand{\dofAxis}[1]{
\def\r {2.5}
\psSolid[object = cone,
    h = 0.2,
    r = 0.07,
    RotX = 90,
    RotY = 45,
    RotZ = 85,
    fillcolor = black,
    grid = false,
    action = none,
    name = A](0,\r,0)
\defFunction[algebraic]{FIII}(t){\r*cos(t)}{\r*sin(t)}{0}
\psSolid [object = courbe,
      r = 0.01, 
      range = 1.55 6.6,
      linecolor = black,
      linewidth = 0.1,
      ngrid= 360 8,
      function = FIII,
      action = none,
      name = B]
\psSolid[ object = fusion,
    base =A B,
    action = draw**,        
    linewidth = 0.1, name =C](#1)%
}

\@namedef{p1}{ 0.00 0.00 0.00 }
\@namedef{p2}{ 2.00 -2.00 1.00 }
\dofAxis{\@nameuse{p1}}
%\dofAxis{\@nameuse{p2}}
\makeatother
\end{pspicture}
\end{center}
\end{document}

这是一个简化的代码,包含一个单一函数\dofAxis{},该函数是由尖端(实心圆锥)和主体形成的圆角箭头,主体是由 绘制的部分圆 object=courbe。之后,执行融合操作以简化并创建一个可以移动的单一对象,提供 3d 坐标点作为函数的参数。为了调用它,我在列表中通过宏\@nameuse{p1}中的变量名提供了一个 3d 坐标点\dofAxis{\@nameuse{p1}}。此对象的实际用途是为包含在更大图表中的多个轴(它们之间不相关)提供可自定义的信息。因此,为了简化对象构造,考虑了使用融合操作的方法。

一如往常,欢迎任何建议。

PS:主要目标是保持抽象方法,使用可自定义的参数绘制参数化的融合对象。PS2:添加第二张图像以阐明融合对象。

只能绘制一个融合对象 在此处输入图片描述

答案1

我找到了一个替代解决方案。有问题的对象courbe被替换为不同的对象object=surfaceparametree,修改了 7.11.3。示例 2pst-solides3d 手册(第 103 页)。

\documentclass{article}
\usepackage{pst-solides3d}
\begin{document}
\begin{center}
\begin{pspicture}[showgrid=false](-5.5,-3.7)(8.5,6)
\psset{viewpoint=20 45 45 rtp2xyz,lightsrc=20 45 50 rtp2xyz,Decran=30}
\psset{solidmemory}
\makeatletter
\newcommand{\dofAxis}[2]{

\defFunction{helix}(u,v)
    {2 .02 v Cos mul sub u Cos mul 0.3 mul}
    {2 .02 v Cos mul sub u Sin mul 0.3 mul}
    {.01 v Sin mul}

\psSolid[ object = surfaceparametree,
    linewidth = 0.5,
    base = -4.725 0 0 6.28,
    fillcolor = gray!80,
    incolor = gray!50,
    function = helix,
    action = none,
    ngrid = 60 0.4,
    name = A]%

\psSolid[object = cone,
    h = 0.25,
    r = 0.08,
    RotX = 90,
    RotY = 45,
    RotZ = 85,
    fillcolor = black!70, 
    linecolor = black!70,
    linewidth = 0.01,
    grid = false,
    action = draw,
    name = B](0,0.6,0)

\psSolid[ object = fusion,
    base = A B ,
    action = draw**,           
    grid = false,
    name = C, #2](#1)%
}
\@namedef{p1}{ 0.00 0.00 0.00 }
\@namedef{p2}{ 2.00 -2.00 1.00 }
\@namedef{p3}{ 2.00 -4.00 2.00 }
\dofAxis{\@nameuse{p1}}{}
\dofAxis{\@nameuse{p2}}{RotX = 90}
\dofAxis{\@nameuse{p3}}{RotY=90}
\makeatother
\end{pspicture}
\end{center}
\end{document}

同时出现的 3D 曲线箭头

相关内容