我想画两个力。因此,我使用 ikz-euclid 的两个线段定义。但仔细观察,这两个圆不是从同一点开始的。似乎起点的圆围绕点 A 旋转。
我可以理解这是箭头的正确方向。
我的代码是:
\documentclass{article}
\usepackage{pgf,tikz}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usetikzlibrary{arrows, decorations.pathmorphing, calc,intersections,through,backgrounds,patterns,fit,arrows.meta}
\begin{document}
\begin{tikzpicture}
\tkzInit[ymax=3,xmax=8]
\tkzDefPoints{1/1/A};
\tkzDefShiftPoint[A](12:6){B};
\tkzDefShiftPoint[A](12:1.2){C};
\tkzDefShiftPoint[A](50:5){D};
%\tkzClip
\tkzGrid
\draw[red,Circle-stealth] (A) -- (B);
\draw[Circle-stealth] (A) -- (D);
\end{tikzpicture}
\end{document}
我可以把它改成
\documentclass{article}
\usepackage{pgf,tikz}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usetikzlibrary{arrows, decorations.pathmorphing, calc,intersections,through,backgrounds,patterns,fit,arrows.meta}
\begin{document}
\begin{tikzpicture}
\tkzInit[ymax=3,xmax=8]
\tkzDefPoints{1/1/A};
\tkzDefShiftPoint[A](12:6){B};
\tkzDefShiftPoint[A](12:1.2){C};
\tkzDefShiftPoint[A](50:5){D};
%\tkzClip
\tkzGrid
\draw[red,-stealth] (A) -- (B);
\draw[-stealth] (A) -- (D);
\tkzDrawPoint[fill=black](A)
\end{tikzpicture}
\end{document}
这给了我想要的结果,但也许还有更优雅的方法来实现它。
答案1
我认为你的方法很好。“不好”的结果当然是因为箭头尖端放在了终点,而不是中心,也就是说,“箭头”的尖端放在了路径的起点/终点。
当然,您可以通过圆形箭头尖端的半径延长线,即\draw[red,{Circle[length=4pt]}-stealth,shorten <=-2pt] (A) -- (B);
,但单独添加点似乎工作量较少。
另一个选择是将A
其定义为node
而不是点,但可以使用您认为最方便的选项。
\documentclass[border=4mm,tikz]{standalone}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\tkzInit[ymax=3,xmax=8]
\tkzGrid
\node [minimum size=3pt,inner sep=0pt,fill,circle,outer sep=0pt] (A) at (1,1) {};
\tkzDefShiftPoint[A](12:6){B};
\tkzDefShiftPoint[A](12:1.2){C};
\tkzDefShiftPoint[A](50:5){D};
%\tkzClip
\draw[red,-stealth] (A) -- (B);
\draw[-stealth] (A) -- (D);
\end{tikzpicture}
\end{document}
(旁注:您不必明确地加载pgf
以及tikz
何时加载tkz-euclide
和/或pgfplots
。)