我特别感兴趣的是线 AB 和 CD 相交,但位于线段 AB、CD 之外(至少一条线段之外)的情况,并获取交点 I 以进行进一步的工作。类似的问题仅处理线段相交的情况。
答案1
- 声明两个
path
相交的。 - 计算并绘制交点。
- 绘制(或不绘制)一些原始路径的片段。
就这样。
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{intersections, calc}
\begin{document}
\begin{tikzpicture}
\path[name path=a] (0,0) coordinate (a1) -- (2,4) coordinate (a2);
\path[name path=b] (0,4) coordinate (b1) -- (5,2) coordinate (b2);
\fill[red,name intersections={of=a and b}]
(intersection-1) circle (2pt);
\draw (a1)--($(a1)!.5!(a2)$);
\draw (b2)--($(b2)!.5!(b1)$);
\end{tikzpicture}
\end{document}
答案2
还有另一种方法可以找到两条相交线的交点,这种方法在手册中不再有记录,3.0.1a
但仍然有效。它位于手册 1.18 的第 87 页,您可以在这里找到它(直到什么时候?): tikz pgf 手册 1.18
它包括求解具有 2 个未知数(定义 2 条线的点)的 2 个方程组。与3.01a
ignasi 给出的解决方案手册中给出的版本不同,路径在图形上相交不需要找到它们的交点。第二个优点是,它不需要加载任何库即可工作。
你会注意到这些点或它们的坐标被命名为不带括号:
intersection of A--B and 0,3--2,2
按照@marmot 的建议,A-B 线更短
\documentclass[tikz,border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[help lines] (0,0) grid (3,3);
\draw (0,0) coordinate (A)node[below]{A} -- (2,1.5) coordinate (B)node[below right]{B}
(0,3)node[below left]{C} -- (2,2)node[below left]{D};
\fill[blue] (intersection of A--B and 0,3--2,2) circle (2pt);
\end{tikzpicture}
\end{document}
使用 www.DeepL.com/Translator 翻译