有没有更紧凑的单点计算方法?

有没有更紧凑的单点计算方法?

我有这个代码:

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

\begin{document}

\begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (2,2);
    
    \draw[thick] (A) -- (B |- A);
    \draw[thick] (B) -- (B |- A);

     \draw ($(B |- A) - (.2,0)$) |- ($(B |- A) + (0,.2)$);
\end{tikzpicture}

\end{document}

这样做的目的是:

在此处输入图片描述

一个简单的问题:最后一个命令可以优化吗?我对 tikzpictures 还很陌生,也许我不知道如何以更紧凑的方式获取像这样的点($(B |- A) - (.2,0)$)或直角?

答案1

你甚至不需要calc。你可以简单地引入一个辅助坐标并使用它。

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

\begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (2,2);
    
    \draw[thick] (A) -| coordinate (aux) (B) ;
    \draw ([xshift=-2mm]aux) |- ([yshift=2mm]aux);
\end{tikzpicture}

\end{document}

答案2

tkz-euclide在点坐标中引入了一些随机性

在此处输入图片描述

\documentclass{article}
\usepackage{tkz-euclide}
\begin{document}
    
\begin{tikzpicture}[scale=1.0]
    %define points A,B,C
    \tkzDefPoint(0,0){C}
    \tkzDefPoint(20:9){B}
    \tkzDefPoint(80:5){A}
    %label point A,B,C
    \tkzLabelPoints(C)
    \tkzLabelPoints[above](A)
    %get line orthogonal to base CB
    \tkzDefPointsBy[projection=onto B--C](A){a}
    \tkzDrawSegment[dashed, red](A,a)
    %marking right angles    
    \tkzMarkRightAngle(A,a,C)    
    %drawing dimension 10
    \tkzDrawSegment[style=red, dashed, dim={$10$,15pt,midway,font=\scriptsize, rotate=90}](A,a) 
    \tkzDrawLine(a,C)
    \tkzDrawPoints(A,C)
\end{tikzpicture}
\end{document}

答案3

您可以从 tikz 包中加载角度库,该库提供了绘制直角符号的命令,还提供了绘制其他角度的圆弧符号:

\usepackage{tikz}
\usetikzlibrary{calc,angles}
\begin{document}

\begin{tikzpicture}
    \coordinate (A) at (0,0);
    \coordinate (B) at (2,2);
    
    \draw[thick] (A) -- (B |- A)node[coordinate](C){}--(B);

    % \draw ($(B |- A) - (.2,0)$) |- ($(B |- A) + (0,.2)$); No !
    \draw pic[draw,red,thick,angle radius =2mm]{right angle=B--C--A}; % Yes !
\end{tikzpicture}

您需要使用节点来引用您将使用的点(这就是我添加node[coordinate](C){}到您的代码中的原因)。

在此处输入图片描述

相关内容