如果我在矩形对角线的端点定义了两个节点,那么如何为另外两个角定义节点?

如果我在矩形对角线的端点定义了两个节点,那么如何为另外两个角定义节点?

我有两个节点,我想将它们定义为矩形的对角。我希望能够在另一对对角处定义节点。

我尝试了以下操作,但出现错误:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\pagestyle{empty}
\begin{document}

%% ATTEMPT 1
%% ERROR: doesn't match its definition
\begin{tikzpicture}
  \node (A) at (0,0) {1};
  \node (C) at (5,3) {3};
  \node (B) at ($ (A) ! (C) ! ($ (A) + (1,0) $) $) {B};
\end{tikzpicture}

%% ATTEMPT 2
%% ERROR: doesn't match its definition
\begin{tikzpicture}
  \node (A) at (0,0) {1};
  \node (C) at (5,3) {3};
  \node (tB) at ($ (A) + (1,0) $ ) {tB};
  \node (B) at ($ (A) ! (C) ! (tB)$) {B};
\end{tikzpicture}

\end{document}

为何我的投影不工作?

答案1

也许最简单的方法是使用垂直坐标系:

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

\begin{tikzpicture}
  \node (A) at (0,0) {1};
  \node (C) at (5,3) {3};
  \node (B) at (A.center|-C.center) {2};
  \node (D) at (A.center-|C.center) {4};
\draw[red] (A.center) -- (B.center) -- (C.center) -- (D.center) -- (A.center);
\end{tikzpicture}

\end{document}

在此处输入图片描述

(<name1>|-<name2>)其 x 坐标为<name1>, y 坐标为<name2>

(<name1>-|<name2>)其 x 坐标为<name2>, y 坐标为<name1>

答案2

显然,该calc库不喜欢坐标计算中的某些空格,当我删除它们时,您的两个示例都可以工作,例如

\node (B) at ($(A)!(C)!($(A)+(1,0)$)$) {2};
\node (D) at ($(A)!(C)!($(A)+(0,1)$)$) {4}; 

更具体地说,正如 Gonzalo 所指出的,是中的空格! (<node name>) !导致了错误,因此

\node (B) at ( $ (A) !(C)! ( $ (A)+(1,0) $ ) $ ) {B};
\node (D) at ( $ (A) !(C)! ( $ (A)+(0,1) $ ) $ ) {D};

也可以。

完整代码

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \node (A) at (0,0) {1};
  \node (C) at (5,3) {3};
  \node (B) at ($(A)!(C)!($(A)+(1,0)$)$) {2};
  \node (D) at ($(A)!(C)!($(A)+(0,1)$)$) {4};
  \draw [red] (A) -- (B) -- (C) -- (D) -- (A);
\end{tikzpicture}
\end{document}

上述代码的输出

相关内容