我正在尝试查找并命名由其他四个节点形成的四边形对角线相交处的节点。但是,我没有绘制路径。我在 tikz 手册中似乎只能找到涉及绘制路径的示例。有没有办法在不绘制任何内容的情况下做到这一点?
例如,
\documentclass{article}
\usepackage{tikz}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\node (A) at (0,0) {1};
\node (B) at (1,0) {2};
\node (C) at (5,3) {3};
\node (D) at (-2,7) {4};
\end{tikzpicture}
\end{document}
如何找到并标记对角线AC
和交叉点处的节点BD
?
实际上,我研究的大多数四边形都是边与轴平行的矩形。因此,我对可能也只适用于矩形的解决方案感兴趣。
答案1
您可以使用该intersections
库:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\node (A) at (0,0) {1};
\node (B) at (1,0) {2};
\node (C) at (5,3) {3};
\node (D) at (-2,7) {4};
\draw[cyan,name path=d1] (A.center) -- (C.center);
\draw[cyan,name path=d2] (B.center) -- (D.center);
\path[name intersections={of=d1 and d2, by={l}}]
node[fill,circle,inner sep=1.5pt] (I) at (l) {};
\end{tikzpicture}
\end{document}
对于比较简单的矩形,您可以使用该calc
库来计算其中一条对角线的中点:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\node (A) at (0,0) {1};
\node (B) at (3,0) {2};
\node (C) at (0,7) {3};
\node (D) at (3,7) {4};
\draw[cyan] (A.center) -- (D.center);
\draw[cyan] (B.center) -- (C.center);
\node[fill,circle,inner sep=1.5pt] at ( $ (A)!0.5!(D) $ ) (I) {};
\end{tikzpicture}
\end{document}
如果要多次使用,可以考虑一个命令;类似这样的命令:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\pagestyle{empty}
\newcounter{mycnt}
\newcommand\Inter[5]{%
\stepcounter{mycnt}
\draw[cyan,name path={d\themycnt}] (#1.center) -- (#2.center);
\draw[cyan,name path={e\themycnt}] (#3.center) -- (#4.center);
\path[name intersections={of={d\themycnt} and {e\themycnt}, by={f\themycnt}}]
node[fill,circle,inner sep=1.5pt] (#5) at ({f\themycnt}) {};
}
\begin{document}
\begin{tikzpicture}
\node (A) at (0,0) {1};
\node (B) at (1,0) {2};
\node (C) at (5,3) {3};
\node (D) at (-2,7) {4};
\draw[orange] (A.center) -- (B.center) -- (C.center) -- (D.center) -- cycle;
\Inter{A}{C}{B}{D}{i1}
\node (E) at (7,-2) {5};
\node (F) at (8,5) {6};
\node (G) at (10,3) {7};
\node (H) at (11,-1) {8};
\draw[orange] (E.center) -- (H.center) -- (G.center) -- (F.center) -- cycle;
\Inter{E}{G}{F}{H}{i2}
\end{tikzpicture}
\end{document}
语法为\Inter{<name1>}{<name2>}{<name3>}{<name4>}{<name-int>}
,其中<name1>
,<name2>
对应于一条对角线的端点;<name3>
,<name4>
对应于另一条对角线的端点,<name-int>
是分配给交点节点的名称。
\coordinate
也许使用而不是 来构造顶点会更好\node
。