\nodexn und savedNodeCoors funktionieren nicht gut miteinander

\nodexn und savedNodeCoors funktionieren nicht gut miteinander

Diese Frage entstand aus dem Versuch, eine andere Frage zu beantworten, die zuvor von @StiffJokes (alias Benutzer:19356) gepostet, aber inzwischen gelöscht wurde.

Jedes der folgenden MWEs erzeugt unterschiedliche Ergebnisse für die pspictureauf eine Weise, die ich völlig kontraintuitiv finde. Die ersten beiden Beispiele unterscheiden sich nur darin, wie die borderfür die standaloneKlasse festgelegt wurde. Das dritte Beispiel verwendet die articleKlasse.

MWE Nr. 1:

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node}
%% using pgffor just to see what happens at different values
\usepackage{pgffor}
\begin{document}
\begin{pspicture}[showgrid](-1,-1)(3,3)
    \psset{saveNodeCoors=true}
    \pnode (0,0){A}
    \pnode (2,3){B}
    \foreach \myp in {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.00}
    {
      \pgfmathparse{1-\myp}
      \edef\myq{\pgfmathresult}
      \nodexn{\myp(A)+\myq(B)}{V}
      \qdisk(V){2pt}
      \pnode(!  N-V.x N-V.y ){D}
      \psline(A)(D)
    }
\end{pspicture}
\end{document}

Ergebend

Bildbeschreibung hier eingeben

MWE Nr. 2:

\documentclass[pstricks,border=1in]{standalone}
\usepackage{pst-node}
%% using pgffor just to see what happens at different values
\usepackage{pgffor}
\begin{document}
\begin{pspicture}[showgrid](-1,-1)(3,3)
    \psset{saveNodeCoors=true}
    \pnode (0,0){A}
    \pnode (2,3){B}
    \foreach \myp in {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.00}
    {
      \pgfmathparse{1-\myp}
      \edef\myq{\pgfmathresult}
      \nodexn{\myp(A)+\myq(B)}{V}
      \qdisk(V){2pt}
      \pnode(!  N-V.x N-V.y ){D}
      \psline(A)(D)
    }
\end{pspicture}
\end{document}

ergebend:

Bildbeschreibung hier eingeben

MWE Nr. 3:

\documentclass{article}
\usepackage{pstricks,pst-node}
%% using pgffor just to see what happens at different values
\usepackage{pgffor}
\begin{document}
\begin{pspicture}[showgrid](-1,-1)(3,3)
    \psset{saveNodeCoors=true}
    \pnode (0,0){A}
    \pnode (2,3){B}
    \foreach \myp in {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.00}
    {
      \pgfmathparse{1-\myp}
      \edef\myq{\pgfmathresult}
      \nodexn{\myp(A)+\myq(B)}{V}
      \qdisk(V){2pt}
      \pnode(!  N-V.x N-V.y ){D}
      \psline(A)(D)
    }
\end{pspicture}
\end{document}

ergebend:

Bildbeschreibung hier eingeben

Kann mir jemand erklären, was hier vor sich geht? Warum diese Unterschiede? Auf einer Ebene Vsind die Koordinaten für korrekt, da die Punkte dort aufgezeichnet werden, wo sie hingehören. Aber sobald man versucht, ! N-V.x N-V.ydie Koordinaten für das Zentrum zu erfassen, läuft alles drunter und drüber.

Durch Ändern der Koordinaten von Punkten Aund Bder neuen Koordinaten für Dkönnen sich diese drastisch verschieben:

MWE Nr. 4

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node}
%% using pgffor just to see what happens at different values
\usepackage{pgffor}
\begin{document}
\begin{pspicture}[showgrid](-1,-1)(3,3)
    \psset{saveNodeCoors=true}
    \pnode (0,0){A}
    \pnode (2,0){B}
    \foreach \myp in {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.00}
    {
      \pgfmathparse{1-\myp}
      \edef\myq{\pgfmathresult}
      \nodexn{\myp(A)+\myq(B)}{V}
      \qdisk(V){2pt}
      \pnode(!  N-V.x N-V.y ){D}
      \psline(A)(D)
    }
\end{pspicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort1

\nodexnverwendet intern Hilfsknoten. Und wenn Knoten durch Knoten gesetzt werden, erhält man relative Koordinaten. Je nach Ausdruck \nodexnfunktioniert es nur mit \psGetNodeCenter{Node}. Ein „einfacher“ Ausdruck ist wie \nodexn{1,1}{A}(ohne ()), dann sind die Knotenwerte gleich.

Und übrigens: Es ist sinnvoller, solche Fragen an die PSTricks-Mailingliste zu schreiben.

Antwort2

Ich bin aufgrund der Überprüfung fest davon überzeugt, dass die Existenz der Variablen \nodexnnicht respektiert wird und sie daher nicht initialisiert wird.saveNodeCoorsN-<node_name>.xN-<node_name>.y

Der folgende Code erstellt 5 identische pspictureAber N-<node_name>.xund N-<node_name>.yerzeugt jeweils unterschiedliche Werte.

\documentclass[preview,border=1cm]{standalone}
\usepackage{pst-tools}
\usepackage{pst-node}
\psset{saveNodeCoors}


\begin{document}
\psLoop{5}{%
\begin{pspicture}(3,3)
    \pnode(1,1){A}
    \rput(0,2){\psPrintValue{N-A.x}}
    \rput(0,1){\psPrintValue{N-A.y}}
    %
    \nodexn{(1,1)}{B}
    \rput(2,2){\psPrintValue{N-B.x}}
    \rput(2,1){\psPrintValue{N-B.y}}
\end{pspicture}
\qquad}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen