如何生成一个多边形,其边与给定多边形的边有给定距离?

如何生成一个多边形,其边与给定多边形的边有给定距离?

以下MWE绘制一个封闭的多边形。

 \documentclass{report}
 \usepackage{tikz}
 \begin{document}
 \begin{tikzpicture
 \draw (0,0) -- (0,1) -- (0.5, 1.5) -- (1,1) -- (1,0) -- cycle;
 \end{tikzpicture}
 \end{document}

如何生成第二个多边形,其边与给定多边形的边具有给定距离? 绘制的结果如下所示:

在此处输入图片描述

答案1

如果您确实需要一个恒定的距离,则缩放图形是行不通的,但您可以使用此处给出的解决方案: https://tex.stackexchange.com/a/103088/8650

该解决方案仅适用于开放路径,因此我像这样关闭一侧的路径:

\documentclass[tikz, border=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations}
\def\pgfdecoratedcontourdistance{0pt}
\pgfkeys{/pgf/decoration/contour distance/.code={%
    \pgfmathparse{#1}%
    \let\pgfdecoratedcontourdistance=\pgfmathresult}%
}
\pgfdeclaredecoration{contour lineto}{start}
{
    \state{start}[next state=draw, width=0pt]{
        \pgfpathmoveto{\pgfpoint{0pt}{\pgfdecoratedcontourdistance}}%
    }
    \state{draw}[next state=draw, width=\pgfdecoratedinputsegmentlength]{       
        \pgfmathparse{-\pgfdecoratedcontourdistance*cot(-\pgfdecoratedangletonextinputsegment/2+90)}%
        \let\shorten=\pgfmathresult%
        \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentlength+\shorten}{\pgfdecoratedcontourdistance}}%  
    }
    \state{final}{
        \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentlength}{\pgfdecoratedcontourdistance}}%
    }   
}

\begin{document}
\begin{tikzpicture}
\draw [postaction={decoration={contour lineto, contour distance=-4pt}, draw, densely dashed, decorate}] 
  (0,0.5) -- (0,1) -- (0.5, 1.5) -- (1,1) -- (1,0) -- (0,0) --cycle ;
\end{tikzpicture}
\end{document}

房屋形状内部有额外的虚线

为了表明形状不仅仅是缩放,这里是距离较大的相同图形:

带有额外虚线的房屋形状

可以看出,内部形状与外部形状并不相同。

相关内容