如何使用 TikZ 沿路径变形形状?

如何使用 TikZ 沿路径变形形状?

我知道可以沿着路径写文字。

我想知道是否可以沿着路径绘制形状?

我知道在大多数情况下这是不可能的。但我认为我们可以为简单的形状绘制这样的形状,如矩形,圆形,立方体等...例如,假设我们有一个矩形内的圆圈(失真样本)。通过弯曲矩形的边缘,我希望圆圈按比例变形。像这样:

在此处输入图片描述

答案1

这是实现此类目标的一种方法。

\documentclass[tikz,border=3mm]{standalone}
\usepgfmodule{nonlineartransformations}
\usetikzlibrary{fpu} 
\newcommand{\PgfmathsetmacroFPU}[2]{\begingroup%
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}%
\pgfmathsetmacro{#1}{#2}%
\pgfmathsmuggle#1\endgroup}
\tikzset{declare function={xtransformed(\x,\y)=\pgfkeysvalueof{/tikz/trafos/a}*
    sign(\x)*\y*\y;},
trafos/.cd,a/.initial=pi}
\makeatletter
\def\mytransformation{%
\PgfmathsetmacroFPU{\myy}{\pgf@y}%
\PgfmathsetmacroFPU{\myx}{\pgf@x+xtransformed(\pgf@x/1cm,\pgf@y/1cm)}%\typeout{(\the\pgf@x,\the\pgf@y)|->(\myx pt,\myy pt)}
\pgf@x=\myx pt%
\pgf@y=\myy pt%
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw (-2,-2) rectangle (2,2);
\draw (0,0) circle [radius=pi/2];
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}
\pgftransformnonlinear{\mytransformation}
\draw (-2,-2) rectangle (2,2);
\draw (0,0) circle [radius=pi/2];
\end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

还有curvilinear图书馆,但我认为如果你想使用它,你需要将图片分成两半。

相关内容