我问这组问题(实际上是下面 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
参数,并且可能呈纯黑色。因此,为了降低阴影强度,lightsrc
和viewpoint
可以选择得更近一些。然而,包装文档对此提出反对意见,并指出以下内容(第 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,...]
。
问题 3:pst-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
总体来说应该可以工作,而且阴影颜色现在无法修改。