考虑以下 MWE:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node(a)[rectangle,draw,minimum size=3cm]{};
\node [fill,circle] at (a.45){};
\node(b)[below=1cm of a,rectangle,draw,minimum width=5cm,minimum height=3cm]{};
\node [fill,circle] at (b.45){};
\end{tikzpicture}
\end{document}
在第二个节点中,我希望b.45
边框锚点位于形状的东北角,就像在第一个节点中一样。
我认为这取决于节点的形状:如果它不是方形边框锚点“移动”。
有没有办法.45
不用反复试验就能预测边界锚点的位置?
答案1
如您所见,第二个节点不是正方形而是矩形,因为您添加了选项,minimum width=5cm,minimum height=3cm
,而minimum size
高度和宽度都固定为相同的值。
下面进一步说明。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,angles,quotes}
\begin{document}
\begin{tikzpicture}
\node(a)[rectangle,draw,minimum size=3cm]{};
\node [draw,fill,circle] at (a.45){};
\coordinate (O) at (a.center);
\draw(a.center) -- +(45:2cm)coordinate(A) (a.center) -- +(0:2cm)coordinate(B);
\path pic[draw, angle radius=7mm,"45",angle eccentricity=1.3] {angle = B--O--A};
\node(b)[draw,below=1cm of a,rectangle,draw,minimum width=5cm,minimum height=3cm]{};
\node [fill,circle] at (b.45){};
\draw(b.center) -- +(45:2cm) (b.center) -- +(0:2cm);
\coordinate (OO) at (b.center);
\draw(b.center) -- +(45:2cm)coordinate(AA) (b.center) -- +(0:2cm)coordinate(BB);
\path pic[draw, angle radius=7mm,"45",angle eccentricity=1.3] {angle = BB--OO--AA};
\end{tikzpicture}
\end{document}
下面是另一个例子:
\documentclass[11pt, oneside]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[]
\node[draw=red,minimum size=2cm] at (0,0){};
\node[draw=blue,minimum width=3cm,minimum height=1cm] at (0,0){};
\foreach \x in {45,90,...,360}
\draw (0,0) -- (\x:4cm)node[pos=1.1]{\x};
\end{tikzpicture}
\end{document}
底线:
b.45
刚好与 x 轴正方向成 45 度角(固定)。如果你有一个以原点为中心的正方形,那么东北方向就位于该位置,否则就不是。
要找出b.45
答案,只需画一条足够长的线:
\documentclass[11pt, oneside]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[]
\node[draw=blue,minimum width=5cm,minimum height=3cm] (b) at (0,0){};
\draw (b.center) -- (45:4cm)node[pos=1.1]{45};
\end{tikzpicture}
\end{document}
这条线和节点边界的交点就是你需要的点。