
Wie kann die Deckkraft eines pst-3dplot
Objekts auf transparent eingestellt werden? Ich habe ein Beispiel, bei dem die Verwendung der Optionen opacity
oder strokeopacity
nicht funktioniert. Ich versuche, ein Bild ähnlich dem folgenden zu erstellen:
In der Hoffnung, mehr Details innerhalb der Kugel zeigen zu können, wie beispielsweise diese:
Ich schaffe es jedoch nicht, dass der obere Teil der Kugel durch die undurchsichtige Oberfläche anders aussieht als der untere, und ich schaffe es auch nicht, die Kugel transparent zu machen, um die inneren Linien/Markierungen zu sehen.
Folgendes habe ich versucht (kompiliert mit XeLatex+MakeIndex+BibTex in TeXWorks):
\documentclass{article}
\usepackage{pst-3dplot}
\usepackage{caption}
\usepackage{subcaption}
\usepackage[nomessages]{fp}% http://ctan.org/pkg/fp
\def \planeLocRatio {.7}
\def \radius {1}
\def \cylLength {5}
\def \planeLen {5}
\FPeval{\theta}{pi/4}
\FPeval{\b}{radius*cos(theta)}
\FPeval{\a}{radius*sin(theta)}
\FPeval{\h}{radius-radius*cos(theta)}
\begin{document}
\begin{figure}[H]
\begin{center}
\begin{subfigure}[b]{0.3\textwidth}
\begin{pspicture}(-4,-2.25)(2,4.25)
%\psset{Alpha=45, Beta=0}
\pstThreeDCoor
\pstThreeDLine[linewidth=2pt,linecolor=blue,arrows=->] (0,0,0)(0,0,\b)
\pstThreeDLine[linewidth=2pt,linecolor=blue,arrows=->] (0,0,0)(0,\a,\b)
\pstThreeDLine[linewidth=2pt,linecolor=green] (0,0,\b)(0,\a,\b)
\pstThreeDLine[linewidth=2pt,linecolor=black] (0,\a,\b)(0,\radius,\radius)
\pstThreeDSphere[strokeopacity=0.1](0,0,0){\radius}
\pstThreeDSquare[fillcolor=blue,fillstyle=solid,opacity=0.9](-5,-5,\planeLocRatio)(0,10,0)(10,0,0)
%\pstThreeDSquare[fillcolor=blue,fillstyle=solid,opacity=0.5](- \planeLen /2,- \planeLen /2,\planeLocRatio)(0,\planeLen,0)(\planeLen,0,0)
\end{pspicture}
\caption{Sphere model}
\end{subfigure}%
\begin{subfigure}[b]{0.3\textwidth}
\begin{pspicture}(-4,-2.25)(2,4.25)
\psCylinder[RotX=-15,RotY=45](0,0,0){\radius}{\cylLength}
%\pstThreeDSquare[fillcolor=blue,fillstyle=solid,opacity=0.5](- \planeLen /2,- \planeLen /2,\planeLocRatio)(0,\planeLen,0)(\planeLen,0,0)
\end{pspicture}
\caption{Cylinder Model}
\end{subfigure}
\caption{Sphere and cylinder particle models at the interface.}
\end{center}
\end{figure}
\end{document}
Was im Moment folgendes ausgibt:
--
Aktualisieren: Herberts Antwort war gut und hat viele der Hauptpunkte für diese Abbildung wiedergegeben, aber ich möchte den Kurs ändern, da er in seiner Antwort darauf hingewiesen hat, dass das Paket keine verdeckten Linien enthält. Außerdem hätte ich gerne eine andere Farbe für die obere Oberfläche als für die untere Oberfläche und auch eine andere Farbe für den Schnittbereich.
Hier ist also, was ich im Moment habe, das jetzt verschiedene Probleme aufweist, zu denen ich weitere Fragen stellen oder die ich hier aktualisieren werde, um bei künftigem Interesse an diesem Problem auf dem Laufenden zu bleiben.
\documentclass{article}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{pst-solides3d}
\usepackage{fp}
\pagestyle{empty}
\def \planeLocRatio {.7} % ratio of z location of plane and radius
\def \radius {0.5}
\def \planeLen {1} % half of one side of the plane
\FPeval{\contAng}{pi/4} % angle from z axis to intersection of plane at sphere edge
\FPeval{\a}{radius*cos(contAng)} % z location at plane intersection
\FPeval{\a2}{a/2}
\FPeval{\b}{radius*sin(contAng)} % radius of circle at plane intersection
\FPeval{\b2}{b/2}
\FPeval{\h}{radius-radius*cos(contAng)} % z distance from top of sphere to plane
\FPeval{\h2}{h/2}
\FPeval{\imgsize}{planeLen+1} % maybe increasing this helps /hbox errors?
\begin{document}
\begin{center}
\begin{pspicture}[solidmemory](-\imgsize,-\imgsize)(\imgsize,\imgsize)
% ================== VIEW ===================
\psset{
viewpoint=10 45 20 rtp2xyz,
lightsrc=viewpoint,
%lightintensity=1.25
}
% ================== POINTS ==================
% origin
\psSolid[object=point,args=0 0 0, name=O, text=O, pos=br]
\psSolid[object=point,args=0 0 \a, name=A, text=A, pos=uc]
%%%%%%% Causes hbox problems
%\psSolid[object=point,args=0 \b \a, name=B, text=B, pos=uc]
% ================== LINES ==================
% origin to center of circle at plane intersection
\psSolid[object=line,linecolor=black!50,linewidth=2pt,args=O A, name=OA]
% label the equation to the side of the line midway through the line
%\psProjection[object=point,definition=milieu,args=O A,text=$Rcos \theta$,pos=uc]
% line from origin to side of sphere intersected with plane
%\psSolid[object=line,linecolor=black!50,linewidth=2pt,args=O B, name=OB]
%\psProjection[object=point,definition=milieu,args=O B,text=$Rsin \theta$,pos=uc]
% line from A to B
%\psSolid[object=line,linecolor=black!50,linewidth=2pt,args=A B, name=AB]
% ================== SPHERE ==================
\psSolid[
object=sphere,
name=mySphere,
r=\radius,
ngrid=30 30, % number of grid lines across 2 dimensions r
grid=false, % remove line edges
hue=0 0.5,
opacity=0.4,
hollow=true,
intersectiontype=0,
intersectionplan=0 0 1 \a,
intersectioncolor=(bleu)
](0,0,0)
% ================== PLANE ==================
\psSolid[
object=plan,
name=myPlane,
definition=solidface,
args=mySphere 1,
base=-1 1 -1 1,
action=draw,
](A,,)
\end{pspicture}
\end{center}
\end{document}
was im Moment ausgibt:
Antwort1
Die aktuelle Version vonhttp://texnik.dante.de/tex/generic/pst-3dplot/pst-3dplot.texberücksichtigt die Werte von opacity
undstrokeopacity
\begin{pspicture}(-4,-2.25)(2,4.25)
\psset{Alpha=45, Beta=10}
\pstThreeDCoor
\pstThreeDLine[linewidth=2pt,linecolor=blue,arrows=->] (0,0,0)(0,0,\b)
\pstThreeDLine[linewidth=2pt,linecolor=blue,arrows=->] (0,0,0)(0,\a,\b)
\pstThreeDLine[linewidth=2pt,linecolor=green] (0,0,\b)(0,\a,\b)
\pstThreeDLine[linewidth=2pt,linecolor=black] (0,\a,\b)(0,\radius,\radius)
\pstThreeDSquare[fillcolor=blue!40,fillstyle=solid,opacity=0.4](-5,-5,\planeLocRatio)(0,10,0)(10,0,0)
\pstThreeDSphere[opacity=0.3,strokeopacity=0.3,linewidth=0.1pt](0,0,0){\radius}
\end{pspicture}
Wenn Sie jedoch verdeckte Linien und Flächen wünschen, verwenden Sie stattdessen „pst-solides3d?“.