我想画一条经过点 A 和 B 的线,但不会止于 A 或 B。有人能帮忙吗?我想用它来构造光学。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\draw[very thin, dotted, color=gray,step= 0.5 cm] (-12.1,-5.1) grid (12.1,5.1);
\draw (-12.1,0) -- (12.1,0) ;
\draw [<->, ultra thick] (0,-3.2) -- (0,3.2) ;
\coordinate (L1) at (0,3);
\coordinate (L2) at (0,-3);
\coordinate (L3) at (0,1.5); %evenwijdig met hoofdas
\coordinate (V1) at (9,0);
\coordinate (V2) at (9,1.5);
\coordinate (F1) at (4,0);
\coordinate (F2) at (-4,0);
\draw [->, thick] (V1) -- (V2) node[right] {voorwerp};
\fill (F1) circle (2pt) node[below] {$f_1$};
\fill (F2) circle (2pt) node[below] {$f_2$};
\draw [name path=A--B] (V2) -- (L3);
\draw [name path=C--D] (L1) -- (L2);
\path [name intersections={of=A--B and C--D,by=E}];
\node [fill=red,inner sep=1pt,label=-90:$E$] at (E) {};
\draw [name path=K--L] (E) -- (F2);
\line(4,2){6};
\end{tikzpicture}
\end{document}
答案1
我喜欢使用的替代方案
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\path (1,0) node[label=above:a,circle,fill=green,](a){} --
(3,2)node[label=above:b,circle,fill=green,](b){}
coordinate[pos=1.5](ff)
coordinate[pos=-0.5](dd);
\draw (dd) -- (ff);
\end{tikzpicture}
\end{document}
使用 [pos = xx] 将一个点(节点或坐标)放置在线段之外以及两点之间。负值用于将点放置在第一个点之前。
答案2
以下是使用该<coord>!<number>!<coord>
语法的一种可能性;该线将延伸超过两个坐标 1 厘米:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\node[circle,fill=green,label=left:a] (a) at (1,0) {};
\node[circle,fill=green,label=left:b] (b) at (3,2) {};
\draw[blue] ($ (a)!-1cm!(b) $) -- ($ (b)!-1cm!(a) $);
\end{tikzpicture}
\end{document}
章节13.5.3 部分修饰语的句法和13.5.4 距离修饰符的语法包含pgfmanual
涉及坐标的有用操作的描述。
缩短选项提供了另一个更简单的选择:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[circle,fill=green,label=left:a] (a) at (1,0) {};
\node[circle,fill=green,label=left:b] (b) at (3,2) {};
\node[circle,fill=green,label=left:c] (c) at (5,2) {};
\node[circle,fill=green,label=left:d] (d) at (7,0) {};
\draw[blue,shorten >=-1cm,shorten <=-1cm] (a) -- (b);
\draw[red,shorten >=-2cm,shorten <=-1cm] (c) -- (d);
\end{tikzpicture}
\end{document}
答案3
PSTricks 解决方案仅用于比较目的。
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-eucl}
\begin{document}
\begin{pspicture}[showgrid](5,5)
\pstGeonode[PosAngle={90}]
(2,2){A}
(3,3){B}
\pstLineAB[nodesep=-1,linecolor=red]{A}{B}
\end{pspicture}
\end{document}
如果我们想要不对称的线路延伸,我们可以使用nodesepA
和nodesepB
代替。nodesep