![TikZ 中与射线的交点](https://linux22.com/image/234848/TikZ%20%E4%B8%AD%E4%B8%8E%E5%B0%84%E7%BA%BF%E7%9A%84%E4%BA%A4%E7%82%B9.png)
有人能告诉我如何在 TikZ 中计算射线和物体的交点吗?通常语法是intersection of p1--p2 and p3--p4
,但我想将 p1 到 p2 的线段与从 p3 开始并朝方向 e 的射线相交。使用 TikZ 可以做到这一点吗?
答案1
你可以通过将线 p1 到 p2(AB
在下面的代码示例中调用)与未绘制的“无限长”(例如一米……)路径相交来作弊。你必须在定义“射线”后重置边界框,否则你的射线tikzpicture
会太大。
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{intersections}
\usetikzlibrary{backgrounds} % Only used for showing the bounding box
\begin{document}
\begin{tikzpicture}[show background rectangle]
\coordinate (C) at (1,1);
\path [name path=Cray]
\foreach \n in {-45,-40,...,45}{ (C) -- +(\n:100cm) };
\pgfresetboundingbox
\draw [name path=AB] (3,-2) .. controls(10,0) and (8,5) .. (8,5);
\draw [red,name intersections={of=AB and Cray,sort by=AB,total=\t}]
\foreach \i in {1,...,\t} { (C) -- (intersection-\i) };
\end{tikzpicture}
\end{document}
答案2
一种快速解决方法是创建一个距离p4alt
为某个标准距离的点,例如1cm
,距离为p3
,然后p3--p4alt
在您的交点规范中使用;无需绘制该点p4alt
本身。如果,例如,e
距离为 115 度,您将使用 来\draw (p3) ++(115:1cm) coordinate (p4alt) ;
设置从 的射线p3
。