使用 calc 包定位点的标签

使用 calc 包定位点的标签

我有我想要的显示...但我不知道代码是如何给出它的!以下显示有一个正方形与一个等边三角形共享一条边。我A使用命令定位点

\node (A-label) at ($(A)+(225:10pt)$) {$A$};

我希望标签D与通过点的(不可见)线的距离相同AD并且与标签所在的顶点的距离相同D。使用勾股定理,所需的距离是

10pt*sqrt(2)*(1/2) = 5pt*sqrt(2)

我使用代码

\node (D-label) at ($(D)+(-90:5pt*sqrt(2))$) {$D$};

并出现错误;我使用代码

\node (D-label) at ($(D)+(-90:5pt*sqrt(2)$) {$D$};

并正确定位标签。我担心的是,最后一条命令中缺少右括号。

\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,angles,positioning,intersections}

\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\begin{document}

\begin{tikzpicture}

\coordinate (A) at (-1,-1);
\coordinate (B) at (-1,1);
\coordinate (C) at (1,1);
\coordinate (D) at (1,-1);

\draw (A) -- (B) -- (C) -- (D) -- cycle;

\path[name path=ray1] (C) -- ($(C) + (-30:3)$);
\path[name path=ray2] (D) -- ($(D) + (30:3)$);


\coordinate[name intersections={of=ray1 and ray2,by={P}}];
\node[label={right:$P$}] at (P) {};
%\draw (P) -- ($(D)!(P)!(C)$);


\draw (C) -- (P) -- (D);

\node[fill=white,circle,inner sep=0.5pt] (A-label) at ($(A)+(225:10pt)$) {$A$};
\node[fill=white,circle,inner sep=0.5pt] (B-label) at ($(B)+(135:10pt)$) {$B$};
\node[fill=white,circle,inner sep=0.5pt] (C-label) at ($(C)+(90:5pt*sqrt(2)$) {$C$};
\node[fill=white,circle,inner sep=0.5pt] (D-label) at ($(D)+(-90:5pt*sqrt(2)$) {$D$};
\node[fill=white,circle,inner sep=0.5pt] (P-label) at ($(P)+(0:10pt)$) {$P$};

\end{tikzpicture}

\end{document}

答案1

节点的D-labelx 坐标来自节点D,y 坐标来自节点A-label。然后垂直坐标系简化了从

($(D)+(-90:5pt*sqrt(2)$)

(D |- A-label)

的位置C-label以相同的方式计算:

(C |- B-label)

结果

\node (D-label) at ($(D)+(-90:5pt*sqrt(2))$) {$D$};

不起作用,因为解析器看到右括号sqrt(2)并认为坐标已完成。花括号参数有帮助:

\node (D-label) at ($(D)+(-90:{5pt*sqrt(2)})$) {$D$};

相关内容