Tikz:直线 AB 上距离 k 处的点 C

Tikz:直线 AB 上距离 k 处的点 C

我想使用 calc 库和 let... in... 命令定义直线 AB 上的点 C,使得 AC=k。这不起作用,为什么?是否存在单位问题(C 似乎非常接近 A)?我尝试了 scalar() 函数(pgfmanual 3.0.1A,p925),但没有帮助。

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
    \begin{tikzpicture}
        \coordinate[label=above left:$A$](A) at(-2,-1);
        \coordinate[label=above right:$B$](B) at (2.5,1);
        \pgfmathsetmacro\k{3.0}
        \path
            let \p1=($(B)-(A)$),
                 \n1={veclen(\x1,\y1)}
            in coordinate[label=below:$C$] (C) at ($(A)!{\k/\n1}!(B)$); 
        \foreach \p in {A,B,C}
            \fill (\p) circle (1.5pt);
    \end{tikzpicture}
\end{document}

谢谢你!

答案1

我怀疑您有以下情况:

在此处输入图片描述

(添加虚线是为了更好地查看坐标是否一致)

对于上述结果,您应该知道,\n1 以点为单位(在您的例子中是 140.1146pt)。因此,您首先需要使两个变量具有相同的长度单位,然后在计算位置时C考虑该数字必须是标量:

($(A)!<scalar>!(B)$)

您可以使用以下方式获得上图:

\documentclass[border=3.141592]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
    \begin{tikzpicture}
\coordinate[label=above  left:$A$](A) at (-2.5,-1);
\coordinate[label=above right:$B$](B) at ( 2.0, 1);
\pgfmathsetmacro\k{3*28.346456693} % <--- observe conversion of units
\path
    let \p1=($(B)-(A)$),
         \n1={veclen(\x1,\y1)}
    in coordinate[label=below:$C$] (C) at ($(A)!scalar(\k/\n1)!(B)$); % <--- observe use of "scalar" option
\foreach \p in {A,B,C}
    \fill (\p) circle (1.5pt);
\draw[densely dashed, ultra thin]   (A) -- (B); % added
    \end{tikzpicture}
\end{document}

\documentclass[border=3.141592]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

    \begin{tikzpicture}
\coordinate[label=above  left:$A$](A) at (-2.5,-1);
\coordinate[label=above right:$B$](B) at ( 2.0, 1);
\pgfmathsetmacro\k{3} 
\path
    let \p1=($(B)-(A)$),
         \n1={veclen(\x1,\y1)}
    in coordinate[label=below:$C$] (C) at ($(A)!scalar(28.346456693*\k/\n1)!(B)$); % <--- observe conversion of units and scalar option
\foreach \p in {A,B,C}
    \fill (\p) circle (1.5pt);
\draw[densely dashed, ultra thin]   (A) -- (B); 
    \end{tikzpicture}
\end{document}

相关内容