我有我想要的显示...但我不知道代码是如何给出它的!以下显示有一个正方形与一个等边三角形共享一条边。我A
使用命令定位点
\node (A-label) at ($(A)+(225:10pt)$) {$A$};
。
我希望标签D
与通过点的(不可见)线的距离相同A
,D
并且与标签所在的顶点的距离相同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-label
x 坐标来自节点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$};