Seite 1 von 1

pstricks Vergleich von Kordinatenwerten zweier Knoten

Verfasst: Di 5. Nov 2019, 12:44
von Gast
Hallo,
ich versuche für den Physikunterricht eingige Grafiken zu gestalten und verwende seit längerem pstricks dafür. Um mir die Arbeit zu erleichtern wäre es für mich sehr sinnvoll von zwei Knoten (meistens mit \pnode oder mit \pstGeonode definiert im X Wert oder im Y Wert zu vergleichen, um dann Verzweigungen zu steuern. Leider gelingt es mir nicht auf die einzelnen X und Y Werte zu zu greifen.
Folgendes stelle ich mir in etwa vor (noch nicht lauffähig):

Code: Alles auswählen

\documentclass{scrartcl}
\usepackage{%
	pstricks,%	
	pstricks-add,%
	pst-eucl,
	pst-node,%
	pst-xkey}
\usepackage{auto-pst-pdf}
\SpecialCoor
\makeatletter
\newif\ifpst@nodeXlt
\pst@nodeXltfalse

% das Kommando funktioniert nicht zum setzen von \pst@nodeXlt
%\def\pstNodeXlt(#1)(#2){%
%	\pnode(#1){testA}
%	\pnode(#2){testB}
%	\pst@getcoor{testA}\pst@tempA
%	\pst@getcoor{testA}\pst@tempB
%	\addto@pscode{
%	/YA \pst@tempA exch pop \pst@number\psyunit div def
%	/XA \pst@tempA exch pop \pst@number\psxunit div def	
%	/YB \pst@tempA exch pop \pst@number\psyunit div def
%	/XB \pst@tempA exch pop \pst@number\psxunit div def
%	YA YB  lt %
%%	\pstnodeXlttrue%so sicher nicht möglich
%if}
%}
\begin{document}
\pst@nodeXlttrue
\ifpst@nodeXlt wahr \else falsch \fi	
\begin{pspicture}(-8,-5)(8,5)
\pnode(0,0){A}\pnode(5,5){B} 
%\pstNodeXlt(A)(B)
\ifpst@nodeXlt \psline(a)(B) \else \psline(A|B)(B|A) \fi
\end{pspicture}
\end{document}
Kann mir jemand weiterhelfen. Ich will darauf aufbauend einige neue Kommandos defineren.

pstricks Schrittweise Darstellungd der Strahlenverläufe

Verfasst: Mi 6. Nov 2019, 09:49
von Gast
Ich weiß es ist kein gutes Minimalbeispiel. Deswegen versuche ich noch einmal zu erläutern, worum es mir geht.

Ich benötige eine Funktion in Pstricks die die Größe der x- oder y-Koordinaten eines Knoten im Vergleich zu einem anderen Knoten auswertet und das Ergebnis einer Variable vom Typ Boolean zuweist.

Erforderlich ist das, um den Strahlenverlauf bei einer Sammellinse in Einzelschritten darzustellen. Z.B.
1. Bild: optische Achse
2. Bild: Linsenebene
3. Bild: Gegenstand
4. Bild: Parallelstrahl von Gegenstand bis zur Linse
5. Bild: Brennpunktstrahl aus Bildstrahl von Linse zu F'
6. Bild: Brennpunktstrahl aus Bildstrahl von Linse zu Bild
u.s.w

Verwende ich hierzu zur Berchnung der Punkte das Paket pst-optic, kann ich die dann einzeln gezeichneten Linien nicht am Rand des Bildes enden lassen.

Verwendet man das paket pst-optic dafür wird immer der gesamte Strahlenverlauf dargestellt. Verwendet man das Paket nur zur Berechnung der Punkte und zeichet die Strahlen selbst, werden siese nicht am Rand abgeschnitten. Dieses problem will ich mit einer Ifthen ... else ... fi Konstruktion lösen und benötige dazu diesen Vergleich.

Code: Alles auswählen

\documentclass{scrartcl}
\usepackage{%
     pstricks,%
     pstricks-add,%
     pst-eucl,
     pst-optic,
     pst-node,%
     pst-xkey}
\usepackage{auto-pst-pdf}
\begin{document}
\begin{pspicture*}[showgrid](-8,-6)(8,6)
\rput(0,0){\lens[lensType=CVG,focus=3,OA=-3,drawing=false]}
\psdot(F)\psdot(F')\psdot(O)\psdot(I)\psdot(I')
\psdot(F)\psdot(F')\psdot(O)\psdot(I)\psdot(I')
\pstLineAB[linewidth=0.75mm,arrowsize=2mm,arrowinset=0]{->}{A}{B}\naput{G}
\pstLineAB[linecolor=red]{B}{I}
\pstLineAB[linecolor=red]{F'}{I}
%\pstLineAB[linecolor=red]{I}{B'}
\end{pspicture*}
\begin{pspicture*}[showgrid](-8,-6)(8,6)
\rput(0,0){\lens[lensType=CVG,focus=3,OA=-3,drawing=false]}
\psdot(F)\psdot(F')\psdot(O)\psdot(I)\psdot(I')
\psdot(F)\psdot(F')\psdot(O)\psdot(I)\psdot(I')
\pstLineAB[linewidth=0.75mm,arrowsize=2mm,arrowinset=0]{->}{A}{B}\naput{G}
\pstLineAB[linecolor=red]{B}{I}
\pstLineAB[linecolor=red]{F'}{I}
\pstLineAB[linecolor=red]{I}{B'}
\end{pspicture*}
\end{document}
Wenn jemand eine andere Idee hat um bei optischen Verläufen die Strahlenverläufe schrittweise entstehen zu lassen, wäre ich natürlich erst recht dankbar.