是否可以使用 tkz 获取点的 x 或 y 坐标?特别是如果我有两个点 A=(a_1,a_2) 和 B=(b_1,b_2),我想要一个点 C=(a_1,b_2)。
这与从 pgfplots 中的坐标中提取 x/y 部分。不同之处在于,我要求在 tkz 中实现它的方法。
答案1
TkZ 点只是坐标节点。因此,您可以以相同的方式使用和定义它们。例如:
\documentclass{article}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(2,2){B}
\path let \p1=(A), \p2=(B) in (\x1,\y2) node[coordinate] (C) {};
\tkzDrawPoints(A,B,C)
\end{tikzpicture}
\end{document}
答案2
您可以使用 tikz 的可能性,不要忘记您可以同时使用 tikz 和 pgf 以及 tkz。另一种可能性是使用(下一个宏在 tkz 中)
\makeatletter
\def\tkz@@extractxy#1{%
\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}
\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}
}
\makeatother
例如但我没有测试它:
\makeatletter
\def\tkzExchangeCoord(#1,#2)#3{%
\tkz@@extractxy{#1}%
\pgf@xa=\pgf@x\relax
\tkz@@extractxy{#2}%
\pgf@yb=\pgf@y\relax
\path[coordinate](\pgf@xa,\pgf@yb) coordinate (#3);}
\makeatother
或更多本着 tkz 的精神
\makeatletter
\def\tkzExchangeCoord(#1,#2){%
\tkz@@extractxy{#1}%
\pgf@xa=\pgf@x\relax
\tkz@@extractxy{#2}%
\pgf@yb=\pgf@y\relax
\path[coordinate](\pgf@xa,\pgf@yb) coordinate (tkzPointResult);}
\makeatother
您可以将要点用于:
\tkzExchangeCoord(A,B)
\tkzGetPoint{H}