![PSTricks: Zeichnen eines Hufeisenmagneten mit pst-3dplot](https://rvso.com/image/400364/PSTricks%3A%20Zeichnen%20eines%20Hufeisenmagneten%20mit%20pst-3dplot.png)
Ich versuche, Bilder mit Hufeisenmagneten mit PSTricks nachzubilden. Mir ist klar, dass es eineFrage dazumit TikZ, aber ich bevorzuge PSTricks. Ich möchte mit PSTricks (pst-3dplot) so etwas wie das Folgende zeichnen:
Ich habe mir das pst-3dplot
Paket zur Orientierung angesehen. Dort gibt es eine Definition von \pstThreeDBox
zum Zeichnen eines einfachen rechteckigen Quaders. Davon inspiriert und unter Weglassen eines Großteils der cleveren Definitionen für Fälle unterschiedlicher Koordinatenperspektiven (mach einfach coorType=0
vorerst weiter) bin ich zu diesem Code gekommen:
% Supposed to draw a threeD Horseshoe
\def\pstThreeDHorseshoe{\pst@object{pstThreeDHorseshoe}}
\def\pstThreeDHorseshoe@i(#1,#2,#3){%
\pst@killglue
\begingroup
\addbefore@par{alternative=false,linestyle=\psk@ThreeDplot@visibleLineStyle}%
\use@keep@par
\gdef\pst@tempX{#1 }%
\gdef\pst@tempY{#2 }%
\gdef\pst@tempZ{#3 }%
\pstThreeDHorseshoe@ii
}% end pstThreeDHorseshoe@i.
\def\pstThreeDHorseshoe@ii(#1,#2,#3)(#4,#5,#6)(#7,#8,#9){%
% Top square :
\pstThreeDSquare(\pst@tempX #1 add,\pst@tempY #2 add,\pst@tempZ #3 add)(#4,#5,#6)(#7,#8,#9)%
% First left square :
\pstThreeDSquare(\pst@tempX #4 add,\pst@tempY #5 add,\pst@tempZ #6 add)(#1 .15 mul,#2 .15 mul,#3 .15 mul)(#7,#8,#9)
% Second left square :
\pstThreeDSquare(\pst@tempX #4 add #1 .85 mul add,\pst@tempY #5 add #2 .85 mul add,\pst@tempZ #6 add #3 .85 mul add)(#1 .15 mul,#2 .15 mul,#3 .15 mul)(#7,#8,#9)
% first front bit :
\pstThreeDSquare(\pst@tempX #7 add,\pst@tempY #8 add,\pst@tempZ #9 add)(#1 .15 mul,#2 .15 mul,#3 .15 mul)(#4,#5,#6)
% second front bit :
\pstThreeDSquare(\pst@tempX #7 add #1 .85 mul add,\pst@tempY #8 add #2 .85 mul add,\pst@tempZ #9 add #3 .85 mul add)(#1 .15 mul,#2 .15 mul,#3 .15 mul)(#4,#5,#6)%
% Inside square one :
\pstThreeDSquare(\pst@tempX #7 .2 mul add #1 .15 mul add,\pst@tempY #8 .2 mul add #2 .15 mul add,\pst@tempZ #9 .2 mul add #3 .15 mul add)(#4,#5,#6)(#7 .8 mul,#8 .8 mul, #9 .8 mul)%
\pstThreeDSquare(\pst@tempX #7 .2 mul add #1 .85 mul add,\pst@tempY #8 .2 mul add #2 .85 mul add,\pst@tempZ #9 .2 mul add #3 .85 mul add)(#4,#5,#6)(#7 .8 mul,#8 .8 mul, #9 .8 mul)%
% Inside square three :
\pstThreeDSquare(\pst@tempX #7 .2 mul add #1 .15 mul add,\pst@tempY #8 .2 mul add #2 .15 mul add,\pst@tempZ #9 .2 mul add #3 .15 mul add)(#4,#5,#6)(#1 .7 mul,#2 .7 mul,#3 .7 mul)
% Back square :
\pstThreeDSquare(\pst@tempX,\pst@tempY,\pst@tempZ)(#4,#5,#6)(#1,#2,#3)
\endgroup
\ignorespaces
}% end pstThreeDHorseshoe@ii.
und laufen mit
\pstThreeDHorseshoe(0,0,0)(0,0,2)(1.5,0,0)(0,3,0)
Zeilen, die nicht sichtbar sein sollen, sollen entfernt werden. Dazu gibt es den Parameter invisibleLineStyle
, der aber nicht gut dokumentiert ist, nur eine halbe Seitein diesem Buch. Ich habe versucht, eine Zeile mit diesem Linienstil zu überschreiben, aber ohne Erfolg.
Ich akzeptiere eine Antwort, die den Umgang mit diesem Parameter zeigt invisibleLineStyle
und mir hilft, ihn mit der inneren Struktur der Hufeisenform anzuwenden.
Zur Bearbeitung: Schlagen Sie bitte eine clevere Möglichkeit vor, Variablen für 0,15 und 0,2 einzuführen, sodass die Abmessungen später geändert werden können.
Antwort1
Nur der Hufeisenmagnet:
\documentclass[]{article}
\pagestyle{empty}
\usepackage{pst-solides3d}
\begin{document}
\begin{pspicture}(-2,-3)(7,8)
\psset{viewpoint=20 28 15 rtp2xyz,lightsrc=20 60 60 rtp2xyz,Decran=30,solidmemory}
\psSolid[incolor=red,fillcolor=red,object=parallelepiped,a=2,b=0.75,c=1.5,grid=false,name=H2](0,-0.375,0.75)
\psSolid[incolor=red,fillcolor=red,object=parallelepiped,a=2,b=4,c=0.5,grid=false,name=H1](0,2,0.25)
\psSolid[incolor=red,fillcolor=green,object=parallelepiped,a=2,b=0.75,c=1.5,grid=false,name=H3](0,-0.375,2.25)
\psSolid[incolor=red,fillcolor=green,object=parallelepiped,a=2,b=4,c=0.5,grid=false,name=H4](0,2,2.75)
\end{pspicture}
\end{document}
Das Bild aus dem kompletten Beispiel (Link im Kommentar)