\nodexn e saveNodeCoors não funcionam bem um com o outro

\nodexn e saveNodeCoors não funcionam bem um com o outro

Esta questão surgiu da tentativa de responder a uma pergunta diferente postada anteriormente por @StiffJokes (também conhecido como usuário: 19356), mas agora excluída.

Cada um dos seguintes MWE produz resultados diferentes de pspictureuma maneira que considero completamente contra-intuitiva. Os dois primeiros exemplos diferem apenas na forma como o borderpara a standaloneclasse foi definido. O terceiro exemplo usa a articleclasse.

MWE #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}

Resultando em

insira a descrição da imagem aqui

MWE #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}

resultando em:

insira a descrição da imagem aqui

MWE #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}

resultando em:

insira a descrição da imagem aqui

Alguém pode explicar o que está acontecendo aqui? Por que as diferenças? Em um nível, as coordenadas Vestão corretas, pois os pontos estão sendo plotados onde pertencem. Mas assim que você tenta usar ! N-V.x N-V.ypara capturar as coordenadas do centro, as coisas ficam confusas.

Ao alterar as coordenadas dos pontos Ae Bas novas coordenadas Dpodem mudar drasticamente:

MWE #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}

insira a descrição da imagem aqui

Responder1

\nodexnusa nós auxiliares internamente. E quando os nós são definidos por nós, você obterá coordenadas relativas. Dependendo da expressão \nodexnfunciona apenas com \psGetNodeCenter{Node}. Uma expressão "simples" é como \nodexn{1,1}{A}(sem ()), então os valores dos nós são iguais.

E, a propósito: escrever essas perguntas na lista de discussão do PSTricks faz mais sentido.

Responder2

Acredito fortemente pela inspeção que \nodexnnão respeita a existência da saveNodeCoorsvariável N-<node_name>.xe N-<node_name>.yfica não inicializada.

O código a seguir cria 5 pspicturemas idênticos N-<node_name>.xe N-<node_name>.yproduz valores diferentes cada.

\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}

insira a descrição da imagem aqui

informação relacionada