我想创建一个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;