pst-solides3d 的一些扩展

pst-solides3d 的一些扩展

我问这组问题(实际上是下面 3 个中的 2 个)PSTricks 邮件列表几天前,但后来听说赫伯特的“待办事项”清单相当长。因此,我在这里将它们分发给更广泛的受众,希望得到一些反馈……

考虑以下最小示例:

\documentclass{article}
\usepackage{multido}%
\usepackage{pst-solides3d}%
\pagestyle{empty}
\begin{document}
\begin{pspicture}(-4,-4)(10,10)
  \psset{viewpoint=50 45 20 rtp2xyz,Decran=25,lightsrc=50 45 20,lightintensity=1}%

  % ================== SPHERE ==================
  \psSolid[%
    r=3.5,% sphere radius
    object=calottesphere,% sphere
    theta=90,phi=-90,% angles between which to draw the hollow spherical section
    ngrid=45 45,% number of grid lines across 2 dimensions r
    grid,% remove line edges
    fillcolor=black!15,%
    incolor=black!15,%
    hollow=true,% object has a hollow look
    action=draw**](0,0,0)% draw the object

  % ================== SECTION CURVE ==================
  % pi/2~1.5707963267948966192313216916398
  % pi/30~0.10471975511965977461542144610932
  % pi/15~0.20943951023931954923084289221863
  % pi/6~0.52359877559829887307710723054658
  % r=3.5*sin(45)~2.4748737341529
  % x=r*cos(t), y=r*sin(t), z={2.4748737341529,4.4748737341529}
  \defFunction[algebraic]%
    {sectioncut}(t)%
    {3.5*cos(0.5236)*cos(t)}{3.5*cos(0.5236)*sin(t)}{3.5*sin(0.5236)}%
  \multido{\rA=0.0+0.2094,\rB=0.1047+0.2094}{15}{%
    \psSolid[%
      object=courbe,% object is a curve
      r=0,% with of curve line is 0
      range=\rA\space \rB,%
      linecolor=black,%
      linewidth=0.5\pslinewidth,%
      resolution=360,%
      RotZ=-45,%
      function=sectioncut]%
  }%
\end{pspicture}
\end{document}

它生成这个球体和虚线段:

带虚线段的球体

由于我不熟悉如何摆弄软件包内部,我不确定我的问题是否合理,或者可能太牵强了。不过,提问是免费的,对吧?没错...


问题 1:是否可以将默认阴影颜色从黑色更改为其他颜色?

我提出这个问题的动机源于这样一个事实:物体从光源(lightsrc)投射出的阴影取决于指定的viewpoint参数,并且可能呈纯黑色。因此,为了降低阴影强度,lightsrcviewpoint可以选择得更近一些。然而,包装文档对此提出反对意见,并指出以下内容(第 16 页):

注意:为了让图形中出现一些阴影区域(强调 3D 角色),我们建议选择不同的光源和视点。

因此,为了注意这一点,最好有/使用类似shadowcolor=black!50(比如)的选项。考虑到这一点 - 我要说的是黄金 -lightsrccolor=green!50!red对于那些你真的要摆弄不同颜色的灯泡的节日来说,有一个类似(比如)的选项怎么样?


问题2linestyle=dashed:是否可以为 3D 中的参数曲线创建虚线样式( ) object=courbe

虽然图中的截面曲线看起来像虚线,但实际上它利用了multido包来顺序打印15 条实线段沿 pi 间隔(更精确地说是 pi/15~0.2094)的参数曲线。但是,我认为这会人为地增大生成的 EPS/PDF,因为 (15) 个线段中的每一段都被视为其自身\psSolid[object=courbe,...]


问题 3pst-solides3d提供选项opacity=k,用于设置填充不透明度表面。是否可以添加类似的描边不透明度选项?

这个选项源于PSTricks不透明度选项:(strokeopacity用于正常冲程操作)和opacity(用于填充区域)。

答案1

对于需要测试是否可见的对象,这是不可能的,linestyle=dashed因为所有线段通常都比虚线中的线段短,并且它们将在绘制之前进行排序。但是,您可以从这样的线中删除一些线段:

\documentclass{article}
\usepackage{pst-solides3d}
\pagestyle{empty}
\begin{document}
\begin{pspicture}(-4,-4)(10,10)
\psset{viewpoint=50 45 20 rtp2xyz,Decran=25,lightsrc=viewpoint,lightintensity=1.25}
\psSolid[object=sphere,r=3.5,ngrid=30 30,hue =0 0.5,grid=false]
\defFunction[algebraic]{sectioncut}(t)
    {3.5*cos(0.5236)*cos(t)}
    {3.5*cos(0.5236)*sin(t)}
    {3.5*sin(0.5236)}
\psSolid[object=courbe,r=0,range=-0.75 2.5,resolution=90,
    rm=1 2 88{} for, % delete every second segment
    function=sectioncut]
\end{pspicture}
\end{document}

在此处输入图片描述

strokeopacity总体来说应该可以工作,而且阴影颜色现在无法修改。

相关内容