![\nodexn e saveNodeCoors não funcionam bem um com o outro](https://rvso.com/image/281606/%5Cnodexn%20e%20saveNodeCoors%20n%C3%A3o%20funcionam%20bem%20um%20com%20o%20outro.png)
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 pspicture
uma maneira que considero completamente contra-intuitiva. Os dois primeiros exemplos diferem apenas na forma como o border
para a standalone
classe foi definido. O terceiro exemplo usa a article
classe.
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
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:
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:
Alguém pode explicar o que está acontecendo aqui? Por que as diferenças? Em um nível, as coordenadas V
estão corretas, pois os pontos estão sendo plotados onde pertencem. Mas assim que você tenta usar ! N-V.x N-V.y
para capturar as coordenadas do centro, as coisas ficam confusas.
Ao alterar as coordenadas dos pontos A
e B
as novas coordenadas D
podem 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}
Responder1
\nodexn
usa nós auxiliares internamente. E quando os nós são definidos por nós, você obterá coordenadas relativas. Dependendo da expressão \nodexn
funciona 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 \nodexn
não respeita a existência da saveNodeCoors
variável N-<node_name>.x
e N-<node_name>.y
fica não inicializada.
O código a seguir cria 5 pspicture
mas idênticos N-<node_name>.x
e N-<node_name>.y
produz 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}