\nodexn과 saveNodeCoors가 서로 잘 작동하지 않음

\nodexn과 saveNodeCoors가 서로 잘 작동하지 않음

이 질문은 @StiffJokes(일명 사용자:19356)가 이전에 게시했지만 지금은 삭제된 다른 질문에 답변하려고 하다가 발생했습니다.

다음 MWE 각각은 pspicture완전히 반직관적인 방식으로 서로 다른 결과를 생성합니다. 처음 두 예제는 border클래스의 standalone설정 방법만 다릅니다. 세 번째 예제에서는 article클래스를 사용합니다.

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}

를 야기하는

여기에 이미지 설명을 입력하세요

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}

를 야기하는:

여기에 이미지 설명을 입력하세요

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}

를 야기하는:

여기에 이미지 설명을 입력하세요

여기서 무슨 일이 일어나고 있는지 설명할 수 있는 사람이 있나요? 왜 차이점이 있습니까? 한 수준에서는 V점이 속한 위치에 점이 표시되므로 좌표가 정확합니다. 그러나 ! N-V.x N-V.y중앙의 좌표를 잡기 위해 을 사용하려고 하면 상황이 엉망이 됩니다.

점의 좌표를 변경하면 AB좌표가 D극적으로 바뀔 수 있습니다.

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}

여기에 이미지 설명을 입력하세요

답변1

\nodexn내부적으로 도우미 노드를 사용합니다. 그리고 노드가 노드별로 설정되면 상대 좌표를 얻게 됩니다. 표현에 따라 \nodexn에서만 작동합니다 \psGetNodeCenter{Node}. "간단한" 표현식은 \nodexn{1,1}{A}(이 없는 ()) 것과 같으며 노드 값은 동일합니다.

그런데 PSTricks 메일링 리스트에 그러한 질문을 작성하는 것이 더 합리적입니다.

답변2

나는 변수 \nodexn의 존재를 존중하지 않고 초기화되지 않은 상태로 남아 있는 검사를 강력하게 믿습니다 .saveNodeCoorsN-<node_name>.xN-<node_name>.y

다음 코드는 5개의 동일한 pspicturebut 을 생성 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}

여기에 이미지 설명을 입력하세요

관련 정보