我必须检测参数图中两个线段相交的情况,需要将坐标计算到 tikz 图片中,但它不起作用,似乎“intersections=…total=\t”或“\equal{\t}{1}”没有预期的结果。
当 2 个片段交叉到一个设计参数中时,您会检测到,该参数需要计算 tikz 图像中的坐标。但无法运行。我在交集计算中看到“total=\t”,所以我的 \t 与 1 的比较测试没有表现出任何差异。
代码/Le代码
\begin{tikzpicture}
\draw [name path=l1] (-3,-3) -- (6,4);
\draw [name path=l2] (-2,2) -- (2,-2);
\path [name intersections={of=l1 and l2,name=int,total=\t}];
\ifthenelse{\equal{\t}{1}}{
\coordinate [label=I] (I) at (int-1);
}{}
\end{tikzpicture}
也不/ni
\begin{tikzpicture}
\draw [name path=l1] (-3,-3) -- (6,4);
\draw [name path=l2] (-2,2) -- (2,-2);
\path [name intersections={of=l1 and l2,by=I},
every node/.style={label=I}];
\end{tikzpicture}
不打印 I 标签,因此我猜测没有创建坐标。 /我没有看到我的标签,或者我认为它没有创建。
但代码/Alors que le code
\begin{tikzpicture}
\draw [name path=l1] (-3,-3) -- (6,4);
\draw [name path=l2] (-2,2) -- (2,-2);
\path [name intersections={of=l1 and l2,name=int}];
\coordinate [label=I] (I) at (int-1);
\end{tikzpicture}
当线段不相交时显示 I 点标签或失败。 / 显示我所在的点的标签,或者设置 si 段不予退款。
我怎样才能捕获“总计”值,或者捕获失败?
我如何能恢复“全部”的价值,从而摆脱错误?
编辑:按照要求完成脚本。
\documentclass{article}
\usepackage{ifthen}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\draw [name path=l1] (-2,-3) -- (4,2);
\draw [name path=l2] (-1,2) -- (2,-2);
\path [name intersections={of=l1 and l2,name=int,total=\t}];
\ifthenelse{\equal{\t}{1}}{
\coordinate [label=I] (I) at (int-1);
}{}
\end{tikzpicture}
\begin{tikzpicture}
\draw [name path=l3] (-2,-3) -- (4,2);
\draw [name path=l4] (-1,2) -- (2,-2);
\path [name intersections={of=l3 and l4,by=I},
every node/.style={label=I}];
\end{tikzpicture}
\begin{tikzpicture}
\draw [name path=l5] (-2,-3) -- (4,2);
\draw [name path=l6] (-1,2) -- (2,-2);
%\draw [name path=l6] (-1,2) -- (-2,-2); % non intersect = failure
\path [name intersections={of=l5 and l6,name=inter}];
\coordinate [label=J] (J) at (inter-1);
\end{tikzpicture}
\end{document}
我需要在第一个交叉点创建坐标“I”(因为 J 在第三个交叉点),但我需要避免当线段不相交时失败。
答案1
好的,看来我有一个答案了。
\ifthenelse{} 进入 tikzpicture env 需要在路径指令之外。因此在编译时,pdftex 需要以“;”结束路径,因此 Intersections.total 属性引用已关闭。
但是 \ifnum{} 运行完美。
我的解决方案是:
\usepackage{ifthen}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
% 2 segments that intersect = node I
\draw [name path=l1] (-2,2) -- (2,1.5);
\draw [name path=l2] (-2,1.5) -- (2,2);
\path [name intersections={of=l1 and l2, name=i, total=\t}]
\ifnum \t=1 (i-1) node [style=above] {I} \fi;
% 2 parallel segments = no intersection = no node J and no compilation failure
\draw [name path=l3] (-2,0) -- (2,0);
\draw [name path=l4] (-2,0.2) -- (2,0.2);
\path [name intersections={of=l3 and l4, name=i, total=\t}]
\ifnum \t=1 (i-1) node [style=above] {J} \fi;
\end{tikzpicture}
\end{document}