Tikz 坐标、箭头和突然停止

Tikz 坐标、箭头和突然停止

因此,我绘制了速度箭头并在上面标注了标签。

最简单的例子是,我有一个节点 (a),我想要一个指向原点的箭头,但只指向一部分。距离可能很长或很短,可能取决于速度的大小。我找到了一个解决方案,但我想知道还有什么其他的,因为它不是那么优雅和 LaTeX-y。

我刚刚完成的工作是这一行:

\draw[->, shorten >=1cm] (a) -- (0,0)
node [near start, sloped, above] {12 m/s};

我不喜欢这个解决方案的部分是,我指定了要减少长度的量而不是它的实际长度,并且随着长度的变化,我必须改变标签的位置,而我真正想要的只是它以箭头长度为中心。

我在想,也许有某种方法可以将相对极坐标指定为“朝向该点,这么长”,而不是明确的角度。有什么想法吗?

答案1

您可以使用<coordinate>!<number>!<second coordinate> 语法;例如,表示“从到 的(3,3)!.25!(0,0)四分之一处的坐标”。要将标签放置在箭头中间,请使用选项。例如:(3,3)(0,0)midway

\documentclass[12pt]{article} 
\usepackage{tikz} 
\usetikzlibrary{calc} 

\begin{document}

\begin{tikzpicture}
\coordinate (a) at (3,3);
\coordinate (b) at (3,0);
\coordinate (c) at (-3,3);
\node (O) at (0,0) {origin};
\draw[->,red] (3,3) -- ( $ (a)!.25!(0,0) $ ) node [midway, sloped, above] {12 m/s};
\draw[->,blue] (b) -- ( $ (b)!.8!(0,0) $ ) node [midway, sloped, above] {12 m/s};
\draw[->,magenta] (c) -- ( $ (c)!.5!(0,0) $ ) node [midway, sloped, above] {12 m/s};
\end{tikzpicture}

\end{document}

在此处输入图片描述

更接近您需要的是语法,其含义是“使用从到直线上<coordinate>!<dimension>!<second coordinate>距离 的点 ”。举个小例子:<dimension><coordinate><coordinate><second coordinate>

\documentclass[12pt]{article} 
\usepackage{tikz} 
\usetikzlibrary{calc} 

\begin{document}

\begin{tikzpicture}
\coordinate (b) at (3,0);
\node (O) at (0,0) {origin};
\draw[->,magenta] (b) -- ( $ (b)!3cm!(0,0) $ ) node [midway, sloped, above] {12 m/s};
\end{tikzpicture}

\end{document}

在此处输入图片描述

当然,您可以将其包装在宏中,如以下示例所示。宏\arrowfromto[<attributes>]{<initial coordinate>}{<to coordinate>}{<distance>}{<label>}\draw使用第一个可选参数中给出的选项应用,从<initial coordinate>到远离它的点,以及从到` 的<distance>直线上:<initial coordinate><to coordinate>, using a label given by

\documentclass[12pt]{article} 
\usepackage{tikz} 
\usetikzlibrary{calc} 

\begin{document}

\begin{tikzpicture}
% syntax
% \arrowfromto[<attributes>]{<initial coordinate>}{<to coordinate>}{<distance>}{<label>}
\newcommand\arrowfromto[5][blue]{%
  \draw[#1] #2 -- ( $ #2!#4!#3 $ ) node [midway, sloped, above] {#5}}
\coordinate (a) at (3,3);
\node (O) at (0,0) {$O$};
\node (a) at (0,3) {$a$};
\node (b) at (3,3) {$b$};
\arrowfromto{(O)}{(a)}{5cm}{5cm};
\arrowfromto[-latex,red]{(a)}{(b)}{3cm}{3cm};
\arrowfromto[<->,green!80!black]{(b)}{(O)}{10mm}{10mm};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容