我正在尝试重现下面的图片。
我已经搜索过了,但是我没有找到以中心点为标记的符号,而且我不得不多次重复这个符号。
编辑:这是我到目前为止得到的
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (4,0);
\coordinate (C) at (0,3);
\coordinate (D) at ($(C)!(A)!(B)$);
\draw (A)node[below left]{$A$}--(B)node[below right]{$B$}--(C)node[above left]{$C$}--cycle;
\draw[dashed] (A)--(D)node[above right]{$D$};
%I didn't tried the right angle because of the dot
\end{tikzpicture}
EDIT2:在巴西,我们用这个符号来表示直角,而不是空心矩形
答案1
您可以定义自己的角度\dotMarkRightAngle
,如下所示。需要输入四个参数:角度(正方形边)的大小以及三个括号中的顺时针坐标(#2,#3,#4)
。
\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{calc}
\begin{document}
\def\dotMarkRightAngle[size=#1](#2,#3,#4){%
\draw ($(#3)!#1!(#2)$) --
($($(#3)!#1!(#2)$)!#1!90:(#2)$) --
($(#3)!#1!(#4)$);
\path (#3) --node[circle,fill,inner sep=.5pt]{} ($($(#3)!#1!(#2)$)!#1!90:(#2)$);
}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (4,0);
\coordinate (C) at (0,3);
\coordinate (D) at ($(C)!(A)!(B)$);
\draw (A)node[below left]{$A$}--(B)node[below right]{$B$}--(C)node[above left]{$C$}--cycle;
\draw[dashed] (A)--(D)node[above right]{$D$};
\dotMarkRightAngle[size=6pt](B,A,C);
\dotMarkRightAngle[size=6pt](A,D,B);
\end{tikzpicture}
\end{document}
此外,与tkz-euclide
和使用\tkzMarkRightAngle
和\tkzLabelAngle
。
\documentclass[border=2pt]{standalone}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (4,0);
\coordinate (C) at (0,3);
\coordinate (D) at ($(C)!(A)!(B)$);
\draw (A)node[below left]{$A$}--(B)node[below right]{$B$}--(C)node[above left]{$C$}--cycle;
\draw[dashed,draw=gray] (A)--(D)node[above right]{$D$};
\tkzMarkRightAngle(C,A,B)
\tkzLabelAngle[pos=.15](C,A,B){$\cdot$}
\tkzMarkRightAngle(A,D,B)
\tkzLabelAngle[pos=.15](A,D,B){$\cdot$}
\end{tikzpicture}
\end{document}
答案2
纯 tikz:
\documentclass[tikz,
border=3mm,
]{standalone}
\usetikzlibrary{calc, positioning}
\begin{document}
\begin{tikzpicture}[
dotbox/.style = {draw, minimum size=3mm,
inner sep=0pt, outer sep=0pt,
anchor=#1,
label=center:$\cdot$},
node distance = 0pt
]
\coordinate[label=below left:$A$] (A) at (0,0);
\coordinate[label=below right:$B$] (B) at (4,0);
\coordinate[label=above left:$C$] (C) at (0,3);
\coordinate[label=above right:$D$] (D) at ($(C)!(A)!(B)$);
\draw (A) --(B) --(C) -- cycle;
\draw[dashed] (A)--(D);
% angles
\node[dotbox=south west] at (A) {} ;
\path (D) -- node[pos=0,sloped,dotbox=north east] {} (A);
\end{tikzpicture}
\end{document}
答案3
现在说这个有点晚了 ;-) 但如果有人感兴趣的话,这里有一种用 MetaPost 制作直角符号的方法(里面有所需的点),很大程度上受到了 André Heck 在他的MetaPost 教程,第 47-48 页。
请注意,turningnumber
路径的(如果是逆时针则为 1,否则为 -1)确保端点endofa
和endofb
给出的顺序无关紧要:标记将相同。此外,点 D 的坐标没有明确给出,而是由 MetaPost 本身通过两个隐式线性方程计算得出的。
得益于该luamplib
软件包,它已包含在 LuaLaTeX 程序中。
\RequirePackage{luatex85}
\documentclass[border=3mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
vardef mark_right_angle (expr common, endofa, endofb, mark_size) =
save tn ; tn := turningnumber(common -- endofa -- endofb -- cycle) ;
save t; transform t;
t = identity
zscaled (mark_size*unitvector((1+tn)*endofa + (1-tn)*endofb - 2*common))
shifted common;
z1 = (1, 0); z2 = (1, 1); z3 = (0, 1);
save rangle; path rangle;
rangle = (origin -- z1 -- z2 -- z3 -- cycle) transformed t;
draw (z1 -- z2 -- z3) transformed t;
drawdot center rangle withpen pencircle scaled 2bp;
enddef ;
beginfig(1);
u = cm; pair A, B, C, D;
mark_size := 2mm;
A = origin; B = (4u, 0); C = (0, 3u);
D = whatever[B,C]; (D-A) dotprod (B-C) = 0;
label.lft(btex $A$ etex, A); label.rt(btex $B$ etex, B);
label.lft(btex $C$ etex, C); label.urt(btex $D$ etex, D);
draw A--B--C--cycle; draw A -- D dashed evenly;
mark_right_angle(D, A, B, mark_size);
mark_right_angle(A, B, C, mark_size);
endfig;
\end{mplibcode}
\end{document}
答案4
使用 tkz-elements 和 tkz-euclide。对于角度,我使用了德语符号。您的符号不太合逻辑,因为通常的符号已经表明该角度是直角。
% !TEX TS-program = lualatex
\documentclass[border=2pt]{standalone}
\usepackage{tkz-euclide,tkz-elements}
\begin{document}
\begin{tkzelements}
z.A = point : new ( 0 , 0 )
z.B = point : new ( 4 , 0 )
z.C = z.A : north (3)
L.BC = line : new ( z.B , z.C )
z.D = L.BC : projection (z.A)
\end{tkzelements}
\begin{tikzpicture}
\tkzGetNodes
\tkzDrawPolygon(A,B,C)
\tkzDrawSegment[dashed,gray](A,D)
\tkzMarkRightAngle(C,A,B)
\tkzLabelAngle[pos=.15](B,A,C){$\cdot$}
%\tkzMarkRightAngle(A,D,B)
\tkzMarkRightAngle[german](A,D,B)
%\tkzLabelAngle[pos=.15](A,D,B){$\cdot$}
\tkzLabelPoints[below left](A)
\tkzLabelPoints[above left](C)
\tkzLabelPoints[below right](B)
\tkzLabelPoints[above right](D)
\end{tikzpicture}
\end{document}