用颜色填充的超椭圆

用颜色填充的超椭圆

我想创建一个superellipse形状。我发现了以下问题“如何在 tikz 中制作超椭圆节点形状?“ 和@Jake 的回答这确实会产生一个超椭圆。不幸的是,我想给fill超椭圆添加颜色,但无法通过添加颜色fill=blue(例如添加到 Jake 的超椭圆节点参数)来实现。

\node [fill=blue,minimum width=4cm, minimum height=2cm,
 superellipse, superellipse parameter=1.5] (a) {};

我不知道这是否是由于它是节点形状。这在我的使用情况下不是必需的,path超椭圆形状对我来说就足够了。事实上,我正在寻找或多或少等同于

\fill [blue] (0,0) circle [x radius=2cm, y radius=1cm];

但对于一个superellipse

此外,所引用答案中的代码是 9 年前编写的,也许今天有办法更有效地完成工作,随着 tikz 等的改进。

答案1

\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}[
declare function={
  sx(\t)= a*cos(\t r)^(2/n);
  sy(\t)= b*sin(\t r)^(2/n);
  a=1;
  b=1;
  n=4;
}]
\draw[fill=green, variable=\t, domain=0:pi/2] plot ({sx(\t)},{sy(\t)}) -- plot({-sx(pi/2-\t)},{sy(pi/2-\t)}) -- plot({-sx(\t)},{-sy(\t)}) -- plot({sx(pi/2-\t)},{-sy(pi/2-\t)}) -- cycle;
\end{tikzpicture}
\end{document}

绿色超椭圆

编辑:这是绘制相同内容的另一种方法:

\draw[fill=green, variable=\t]
  plot[domain=0:pi/2] ({sx(\t)},{sy(\t)}) -- 
  plot[domain=pi/2:0] ({-sx(\t)},{sy(\t)}) --
  plot[domain=0:pi/2] ({-sx(\t)},{-sy(\t)}) --
  plot[domain=pi/2:0] ({sx(\t)},{-sy(\t)}) -- cycle;

相关内容