我需要为有关物理引擎的报告绘制一个包含倾斜矩形的轴对齐边界框。
我最初的想法是简单地插入一个矩形节点,对其应用旋转变换,然后使用 的拟合库绘制边界框tikz
。不幸的是,这行不通。
我修改了原有的想法,并编写了以下代码。我的想法是插入四个隐藏节点,对应于旋转矩形的角,然后在它们周围放一个框。
\begin{tikzpicture}
% Draw the rectangle
\coordinate (R) at (7,3);
\node[rectangle,rotate=-30,minimum height=3cm, minimum width=2cm,inner sep=0pt,draw=black] (rect) at (R) {};
% An invisible node at each corner of the rectangle
\begin{scope}[rotate around={-30:(R)}]
\path (R) node () {}
++(-1,-1.5) node (a) {}
++(2,0) node (b) {}
++(0,3) node (c) {}
++(-2,0) node (d) {};
\end{scope}
% Draw the bounding box
\node[fit=(a) (b) (c) (d),draw=green,dashed] {};
\end{tikzpicture}
这是当前结果的图像:
有没有更简单的方法可以做到这一点?
附加问题:我怎样才能消除矩形和其边界框之间的空间(希望它们接触)?
答案1
您可以直接使用节点的角节点rect
,而不必自己定义它们。
如果您只是说fit=(rect)
,fit 命令会假定您的意思是(rect.north)
、(rect.east)
等,这在这种情况下没有帮助,因为您需要(rect.north east)
、(rect.south east)
等,但无论如何,知道这一点总是好的。
为了使外部矩形接触内部矩形,请inner sep=0pt
对外部矩形进行设置:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
% Draw the rectangle
\coordinate (R) at (7,3);
\node[rotate=-30,minimum height=3cm, minimum width=2cm,draw=black] (rect) at (R) {};
% Draw the bounding box
\node[fit=(rect.north west) (rect.north east) (rect.south east) (rect.south west), draw=green,dashed,inner sep=0pt] {};
\end{tikzpicture}
\end{document}