矢量上的标签 - tikz

矢量上的标签 - tikz

我有一条线段和一个与其正交的向量。我想给向量添加一个标签,例如 x 或 y。是否可以通过以下代码的参数来实现这一点?

\documentclass{article}
\usepackage{tikz}
\begin{document}

\newcommand{\tikzAngleOfLine}{\tikz@AngleOfLine}
\def\tikz@AngleOfLine(#1)(#2)#3{%
\pgfmathanglebetweenpoints{%
\pgfpointanchor{#1}{center}}{%
\pgfpointanchor{#2}{center}}
\pgfmathsetmacro{#3}{\pgfmathresult}%
}

\begin{tikzpicture}[scale=1.5]
\draw [<->,thick] (0,2) node (yaxis) [above] {$y$}
    |- (3,0) node (xaxis) [right] {$x$};
\draw (-1,3) coordinate (a_1) -- (3,0) coordinate (a_2);

\tikzAngleOfLine(a_1)(a_2){\angle};
\draw[black,->] (a_2) -- ++ (\angle+90:0.3);

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

简短的回答是将最后一行替换为

\draw[black,->] (a_2) -- ++ (\angle+90:0.3) node[midway,above,sloped] {label};

我忍不住注意到了一些额外的优化。首先,宏\tikzAngleOfLine除了扩展 之外什么也不做\tikz@AngleOfLine,所以您可能只是\def将其\tikzAngleOfLine扩展到 的内容\tikz@AngleOfLine

更重要的是,这种坐标计算由calcTikZ 库处理,因此您只需加载该库并简化代码。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}

\begin{tikzpicture}[scale=1.5]
\draw [<->,thick] (0,2) node (yaxis) [above] {$y$}
    |- (3,0) node (xaxis) [right] {$x$};
\draw (-1,3) coordinate (a_1) -- (3,0) coordinate (a_2);

\draw[black,->] (a_2) -- ($(a_2)!0.45cm!-90:(a_1)$) node[midway,above,sloped] {$\vec u$};

\end{tikzpicture}
\end{document}

示例代码输出

坐标规范($(a_2)!0.45cm!-90:(a_1)$)为“从 开始,然后沿着与从到 的a_2线成 -90 度角的线移动 0.45 厘米。”这种语法非常接近a_2a_1级别的可读性,但如果你知道如何阅读手册,它会非常有用。

相关内容