答案1
另一种选择是元帖子。
这个想法与@mickep的答案基本相同。制作完整的玫瑰曲线,然后选择域的合适子路径以获得花瓣。
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
input colorbrewer-rgb
numeric n; n = 5; % n should be odd
path rose, petal;
rose = (for t=0 upto 179: cosd (n * t) * dir t .. endfor cycle) scaled 100;
petal = subpath (-90/n, 90/n) of rose .. cycle;
for i=1 upto n:
fill petal rotated (360 / n * i) withcolor Spectral[n][i];
endfor
draw rose;
endfig;
\end{mplibcode}
\end{document}
用 编译lualatex
。
答案2
你可以玩玩这些域名。我为你准备了两个:
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}
\addplot[mark=none,blue,domain=-18:18,samples=300] {cos(5*x)};
\addplot[mark=none,red,domain=18:54,samples=300] {cos(5*x)};
\end{polaraxis}
\end{tikzpicture}
\end{document}
答案3
这是我使用普通 Asymptote 的尝试。有polargraph
命令,但Asymptotepolaraxis
模块中没有命令(另请参阅graph
此链接和这个答案),所以我直接画出极轴。
// http://asymptote.ualberta.ca/
import graph;
size(8cm);
path c1=circle((0,0),1);
path c2=circle((0,0),.5);
path c=circle((0,0),1.2);
draw(c1^^c2,gray);
draw(c);
for(int i=0; i<12; ++i){
draw((0,0)--1.3dir(30i),lightgray);
label(string(30i),1.45dir(30i));
}
label("O",(0,0),3W);
label("$1$",(1,0),SE);
pen[] d={red,orange,yellow,blue,green};
real f(real t){return cos(5t);}
for(int i=0; i<5; ++i){
path g=polargraph(f,(2i-1)*pi/10,(2i+1)*pi/10,operator..)--cycle;
filldraw(g,d[i]+opacity(.5));
}
如果您想稍微旋转花瓣,只需rotate(30)
在路径前使用应用。
filldraw(rotate(30)*g,d[i]+opacity(.5));