\nodexn и savedNodeCoors плохо взаимодействуют друг с другом

\nodexn и savedNodeCoors плохо взаимодействуют друг с другом

Этот вопрос возник в результате попытки ответить на другой вопрос, ранее опубликованный @StiffJokes (он же user:19356), но теперь удаленный.

Каждый из следующих MWE выдает разные результаты для pspictureспособом, который я нахожу совершенно контринтуитивным. Первые два примера отличаются только тем, как был установлен borderдля standaloneкласса. Третий пример использует articleкласс.

МВЭ №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}

В результате чего

введите описание изображения здесь

МВЭ №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}

в результате чего:

введите описание изображения здесь

МВЭ №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}

в результате чего:

введите описание изображения здесь

Может кто-нибудь объяснить, что здесь происходит? Почему такие различия? С одной стороны, координаты для Vверны, поскольку точки отображаются там, где им и положено быть. Но как только вы пытаетесь использовать , ! N-V.x N-V.yчтобы получить координаты для центра, все идет наперекосяк.

Изменяя координаты точек A, можно получить кардинальные изменения Bновых координат :D

МВЭ №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}

введите описание изображения здесь

решение1

\nodexnиспользует внутренне вспомогательные узлы. И когда узлы задаются узлами, вы получите относительные координаты. В зависимости от выражения он \nodexnработает только с \psGetNodeCenter{Node}. "Простое" выражение похоже на \nodexn{1,1}{A}(без ()), тогда значения узлов одинаковы.

И, кстати: писать такие вопросы в рассылку PSTricks имеет больше смысла.

решение2

Я твердо убежден, что при проверке \nodexnне учитывается существование saveNodeCoorsтакой переменной N-<node_name>.xи N-<node_name>.yона остается неинициализированной.

Следующий код создает 5 одинаковых pspicture«но» N-<node_name>.xи N-<node_name>.yвыдает разные значения для каждого.

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

введите описание изображения здесь

Связанный контент