![TikZ:使用“交叉点”作为路径的终止坐标,但无法完全到达那里](https://linux22.com/image/290553/TikZ%EF%BC%9A%E4%BD%BF%E7%94%A8%E2%80%9C%E4%BA%A4%E5%8F%89%E7%82%B9%E2%80%9D%E4%BD%9C%E4%B8%BA%E8%B7%AF%E5%BE%84%E7%9A%84%E7%BB%88%E6%AD%A2%E5%9D%90%E6%A0%87%EF%BC%8C%E4%BD%86%E6%97%A0%E6%B3%95%E5%AE%8C%E5%85%A8%E5%88%B0%E8%BE%BE%E9%82%A3%E9%87%8C.png)
我的图形遇到了一些问题:我希望粗箭头(标记为 epsilon+ 和 epsilon-)一直延伸到它们指向的交叉点。
如果我改变“交叉点”语句中的线长度,例如:
(intersection of 100:2--+10:100 and 30:2--+120:100)
即 100 而不是 4,箭头变得更长,但仍然没有完全到达那里......
如何解释这种行为?这是由指定线条的相对坐标引起的吗?
线是否必须实际相交才能使用“交点”指定坐标,或者它们是否根据需要延伸以执行计算?(就我而言,是的,但只是想知道)
这是我用 TikZ 制作的第一个图形,非常感谢大家的反馈。我考虑使用 GeoGebra 并导出为 TikZ 或 PDF,但我还没有完全放弃。
亲切的问候,
斯诺尔·奥尔森
\documentclass[•]{article}
\usepackage{tikz}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}[scale=1]
\tikzstyle weak=[gray, very thin, text=black]
% Direction arrows
\draw[->] (0,0) -- (210:6) node[below] {To base station B};
\draw[->] (0,0) -- (280:4) node[below] {To base station A};
\draw (210:0.5) arc(210:280:0.5) node[midway, below] {$\gamma$};
% Shifted versions of LoP's
\draw[weak] (0,0) -- node[left] {$\Delta_\text{A+}$} (100:2) +(190:4) -- +(10:4) node[right] {LoP$_\text{A+}$};
\draw[weak] (0,0) -- node[below right] {$\Delta_\text{B+}$} (30:2)
+(120:4) -- +(300:4) node[below] {LoP$_\text{B+}$};
\draw[weak] (0,0) -- node[right, black] {$\Delta_\text{A-}$}(280:2)
+(190:4) -- +(10:4) node[right] {LoP$_\text{A-}$};
% Resulting error vectors
\draw[->,thick] (0,0) -- node[above left] {$\epsilon_+$}(intersection of 100:2--+10:4 and 30:2--+120:4);
\draw[->,thick] (0,0) -- node[below] {$\epsilon_-$}(intersection of 280:2--+10:4 and 30:2--+300:4);
\end{tikzpicture}
\end{document}
答案1
如果您添加了intersections
库,您可以用 来命名路径name path
,并使用name intersections={of=pathA and pathB}
在称为 的交叉点处创建坐标intersection-N
。
因为所有线段都从 (0,0) 开始,所以这将是第一个交点 ( intersection-1
),而第二个交点 ( intersection-2
) 才是您想要的。
至于为什么你的代码不起作用,我真的不知道。但是,(intersections of A--B and C--D)
PGF/TikZ 3.0 手册中根本没有提到该语法,这让我认为/猜测它已被弃用,取而代之的是库intersections
。它仍然有效可能是 PGF2.1 代码的残留,可能是为了保持向后兼容性而保留的,而且它有问题。不过我只是在猜测。
最后,我认为建议使用\tikzset{stylename/.style={options}}
,而不是\tikzstyle{stylename}=[options]
(应该使用 \tikzset 还是 \tikzstyle 来定义 TikZ 样式?)。对于您的情况,您可以将样式定义添加到tikzpicture
选项中,因为它只适用于那一张图片。
\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[weak/.style={gray, very thin, text=black}]
% Direction arrows
\draw[->] (0,0) -- (210:6) node[below] {To base station B};
\draw[->] (0,0) -- (280:4) node[below] {To base station A};
\draw (210:0.5) arc(210:280:0.5) node[midway, below] {$\gamma$};
% Shifted versions of LoP's
\draw[weak,name path=A1] (0,0) -- node[left] {$\Delta_\text{A+}$} (100:2) +(190:4) -- +(10:4) node[right] {LoP$_\text{A+}$};
\draw[weak,name path=B] (0,0) -- node[below right] {$\Delta_\text{B+}$} (30:2)
+(120:4) -- +(300:4) node[below] {LoP$_\text{B+}$};
\draw[weak,name path=A2] (0,0) -- node[right, black] {$\Delta_\text{A-}$}(280:2)
+(190:4) -- +(10:4) node[right] {LoP$_\text{A-}$};
% Resulting error vectors
\draw[->,thick,name intersections={of=A1 and B}] (0,0) -- node[above left] {$\epsilon_+$}(intersection-2);
\draw[->,thick,name intersections={of=A2 and B}] (0,0) -- node[below] {$\epsilon_-$}(intersection-2);
\end{tikzpicture}
\end{document}