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}