如何在正方形的中间画一个点?

如何在正方形的中间画一个点?
\begin{tikzpicture}

\coordinate (1) at (0,0);
\coordinate (2) at (2,0);
\coordinate (3) at (2,2);
\coordinate (4) at (0,2);
\coordinate (5) at (0,0);
\coordinate (6) at ($(1)!.5!(2)$);
\coordinate (7) at ($(2)!.5!(3)$);
\coordinate (8) at ($(3)!.5!(4)$);
\coordinate (9) at ($(4)!.5!(1)$);


\foreach \i in {1,2}
\fill (\i) circle (1pt) node [below] {\tiny \i};
\foreach \i in {3,4}
\fill (\i) circle (1pt) node [above] {\tiny \i};
\foreach \i in {6} 
\fill (\i) circle (1pt) node [below] {\tiny 5};
\foreach \i in {7}
\fill (\i) circle (1pt) node [right] {\tiny 6};
\foreach \i in {8}
\fill (\i) circle (1pt) node [above] {\tiny 7};
\foreach \i in {9}
\fill (\i) circle (1pt) node [left] {\tiny 8};        

\draw (1)--(2)--(3)--(4)--(5);

\end{tikzpicture}

我想要将上面的右侧正方形的代码作为左侧正方形点(9)的中点? 在此处输入图片描述

答案1

(9)你可以通过计算点的中点,它表示从到 的路径形式的(1)!0.5!(3)点。我还将其简化为单个:0.5(1)(3)\foreach

在此处输入图片描述

代码:

documentclass{article}

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


\begin{tikzpicture}

\coordinate (1) at (0,0);
\coordinate (2) at (2,0);
\coordinate (3) at (2,2);
\coordinate (4) at (0,2);
\coordinate (5) at ($(1)!.5!(2)$); 
\coordinate (6) at ($(2)!.5!(3)$);
\coordinate (7) at ($(3)!.5!(4)$);
\coordinate (8) at ($(1)!.5!(4)$);
\coordinate (9) at ($(1)!.5!(3)$);


\foreach \i/\Position in {1/below, 2/below, 3/above, 4/above, 5/below, 6/right, 7/above, 8/left, 9/above right} {
    \fill (\i) circle (1pt) node [\Position] {\tiny \i};
}      

\draw (1)--(2)--(3)--(4)-- cycle;

\end{tikzpicture}
\end{document}

答案2

您也可以使用正交坐标。

\coordinate (9) at (8-|5);   %%% <--- new

(8-|5)表示取y与节点相同的-坐标(8),x坐标与节点的x坐标相同(5)。

此外,\foreach循环还可以进一步细化。

\documentclass[tikz,varwidth]{standalone}%

\usetikzlibrary{calc,positioning}
\begin{document}

\begin{tikzpicture}

\coordinate (1) at (0,0);
\coordinate (2) at (2,0);
\coordinate (3) at (2,2);
\coordinate (4) at (0,2);
\coordinate (5) at ($(1)!.5!(2)$);
\coordinate (6) at ($(2)!.5!(3)$);
\coordinate (7) at ($(3)!.5!(4)$);
\coordinate (8) at ($(4)!.5!(1)$);
\coordinate (9) at (8-|5);   %%% <--- new


\foreach \i/\position in {1/below,2/below,3/above,4/above,5/below,6/right,7/above,8/left,9/above right}
\fill (\i) circle (1pt) node [\position] {\tiny \i};

\draw (1)--(2)--(3)--(4)--cycle;

\end{tikzpicture}
\end{document}

在此处输入图片描述

另一种简单的方法是使用矩形节点。

\documentclass[tikz,varwidth]{standalone}%

\usetikzlibrary{calc,positioning}
\begin{document}

\begin{tikzpicture}

\node[draw,minimum height=2cm,minimum width=2cm] (a) at (1,1) {};

\foreach \i/\a/\position in 
{south west/1/below,south east/2/below,north east/3/above,north west/4/above,
south/5/below,east/6/right,north/7/above,west/8/left,center/9/above right} {%
  \fill (a.\i) circle (1pt) node [\position] {\tiny \a}; 
}
\end{tikzpicture}
\end{document}

相关内容