![\nodexn과 saveNodeCoors가 서로 잘 작동하지 않음](https://rvso.com/image/281606/%5Cnodexn%EA%B3%BC%20saveNodeCoors%EA%B0%80%20%EC%84%9C%EB%A1%9C%20%EC%9E%98%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9D%8C.png)
이 질문은 @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
중앙의 좌표를 잡기 위해 을 사용하려고 하면 상황이 엉망이 됩니다.
점의 좌표를 변경하면 A
새 B
좌표가 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
의 존재를 존중하지 않고 초기화되지 않은 상태로 남아 있는 검사를 강력하게 믿습니다 .saveNodeCoors
N-<node_name>.x
N-<node_name>.y
다음 코드는 5개의 동일한 pspicture
but 을 생성 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}