(右)相对于 TikZ 中的线的角度

(右)相对于 TikZ 中的线的角度

TikZ 中是否有与该命令等效的命令tkz-euclide\tkzDefPointWith[orthogonal normed](Rx,Px) \tkzGetPoint{PRx}

答案1

给定两个坐标(A)(B)您可以使用

($ (A) ! {sin(90)} ! 90:(B) $)

画一条(A)与连接线段垂直的线段(A)(B)

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

\begin{document}

\begin{tikzpicture}
\coordinate [label=left:$A$] (A) at (0,0);
\coordinate [label=right:$B$] (B) at (4,3);
\draw (A) -- (B);
\node [fill=red,inner sep=1pt,label=above:$D$] (D) at
  ($ (A) ! {sin(90)} ! 90:(B) $) {};
\draw[red] (A) -- (D);
\end{tikzpicture}

\end{document}

在此处输入图片描述

简单概括一下:现在可以通过连接两个给定坐标的线段的任意点绘制垂线,并且可以具有任意长度。定义了一个命令:

\Perp[<number>]{<coord1>}{<coord2>}{<name>}[<length>]

<coord1><coord1>是两个给定点,<name>将用于内部标记垂线的终点。<number>可以是任何实数;如果0<=<number><=1垂线位于线段内(0,5默认值为通过中点的垂线)。<length>允许控制垂线的长度。例如

\Perp{(L)}{(M)}{T}

(L)通过和定义的线段的中点画一条垂线(M);该垂线的终点将标记为T

代码,包括更多使用示例:

\documentclass{article}
\usepackage{xparse}
\usepackage{tikz}
\usetikzlibrary{calc}

\NewDocumentCommand\Perp{O{0.5}mmmO{1cm}}{%
  \coordinate (#4) at
    ($ ($ #2!#1!#3 $) ! {sin(90)} ! 90:#3 $) {};
  \draw ($ #2!#1!#3 $) -- ($ ($ #2!#1!#3 $) ! #5 ! (#4)$);
  \coordinate (#4) at ($ ($ #2!#1!#3 $) ! #5 ! (#4)$);  
}

\begin{document}

\begin{tikzpicture}
\coordinate [label=left:$A$] (A) at (0,0);
\coordinate [label=right:$B$] (B) at (4,3);
\draw (A) -- (B);
\Perp{(A)}{(B)}{K}

\coordinate [label=left:$C$] (C) at (5,0);
\coordinate [label=right:$D$] (D) at (7,-1);
\draw (C) -- (D);
\Perp[0.3]{(C)}{(D)}{F}[2cm]
\Perp[0.6]{(C)}{(D)}{G}[4cm]
\Perp[0.9]{(C)}{(D)}{H}[6cm]

\foreach \Nom in {K,F,G,H}
  \node[circle,fill=red,inner sep=1.5pt,label={above:$\Nom$}] at (\Nom) {};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

用最长的代码最简单。我必须draw让事情变得可见。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
  \begin{tikzpicture}
    \coordinate (p) at (0,0);
    \coordinate (q) at (3,4);
    \draw (p) -- (q) node[draw,pos=.2,minimum height=1cm,minimum width=1cm,anchor=center,sloped] (pqn){};
    \draw[fill] (pqn.north) circle (1pt);
    \draw (pqn.center) -- (pqn.north);    
  \end{tikzpicture}
\end{document}

在此处输入图片描述

(pqn.north)(pqn.south)是 处的垂直点pos=0.2

答案3

第三种选择。

使用正交标识符 |- 和 -| 表示不同坐标的交点。要找到交点 C,让 A 水平移动,让 B 垂直移动。表达式 ($(A)!(C)!(B)$) 得出点 (C) 在连接 (A) 和 (B) 的线上的投影。

在此处输入图片描述

代码

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

\begin{document}

\begin{tikzpicture}[dot/.style={circle,inner sep=1pt,fill,label=right:{#1}}]
\node [dot=A]  (A) at (0,0){};
\node [dot=B]  (B) at (4,3){};
\node [dot=C]  (C) at (A-|B){};
\draw (A)--(B);
\draw ($(A)!(C)!(B)$) -- (C);
\end{tikzpicture}

\end{document}

相关内容