我想画一束由 n 个圆圈组成的花束。如何在 Tikz 中绘制它?
我想要画的玫瑰有四个花瓣,但是有 n 个花瓣。
答案1
一些答案的启发:
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}[grid=none, axis lines=none]
\addplot[mark=none,domain=0:360,samples=300] {cos(x*3)};
\end{polaraxis}
\end{tikzpicture}
\end{document}
这给了我们
感谢我的好友 percusse:
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}
\addplot[mark=none,domain=0:360,samples=300] {cos(5*x)};
\end{polaraxis}
\end{tikzpicture}
\end{document}
值得注意的是,秘密在于
cos(n*x)
n
您想要的花瓣数是多少。但请注意,当n
为奇数时,您将得到n
花瓣,2n
当 为偶数时,您将得到花瓣n
。如果有人可以改进代码,那就太好了。:)
更新:tohecz 为我提供了一个替代图,这肯定对我们有帮助。虽然他声称这不是一条平滑的曲线,但对我来说已经足够好了。:)
让我们替换
cos(n*x)
经过
abs(cos(n*x/2))
瞧!
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}[grid=none, axis lines=none]
\addplot[mark=none,domain=0:360,samples=300] { abs(cos(6*x/2))};
\end{polaraxis}
\end{tikzpicture}
\end{document}
我们有:
耶!:)
答案2
PSTricks 中有 4 个选项。
r = f(Θ)
在代数中
径向距离是代数形式的角度函数。
\begin{pspicture}(-1,-1)(1,1)
\psplot[algebraic,polarplot,linecolor=red]{0}{TwoPi}{cos(3*x)}
\end{pspicture}
x = f(t)
y = g(t)
代数中
和x
都是代数形式y
的函数。t
\begin{pspicture}(-1,-1)(1,1)
\psparametricplot[algebraic,linecolor=green]{0}{TwoPi}{cos(3*t)*cos(t)|cos(3*t)*sin(t)}
\end{pspicture}
r = f(Θ)
在 RPN 中
径向距离是 RPN 形式的角度函数。
\begin{pspicture}(-1,-1)(1,1)
\psplot[polarplot,linecolor=blue]{0}{TwoPi RadtoDeg}{3 x mul cos}
\end{pspicture}
x = f(t)
并y = g(t)
在 RPN 中
和x
都是RPN形式y
的函数。t
\begin{pspicture}(-1,-1)(1,1)
\psparametricplot[linecolor=orange]{0}{TwoPi RadtoDeg}{3 t mul cos t PtoC}
\end{pspicture}
完整代码
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}
\psset{plotpoints=150}
\def\Label#1{\uput[90](0,1){\tiny$n=#1$}}
\def\Draw#1{%
% r = f(Θ) in algebraic
\begin{pspicture}(-1,-1)(1,1)
\psplot[algebraic,polarplot,linecolor=red]{0}{TwoPi}{cos(#1*x)}
\Label{#1}
\end{pspicture}
% x = f(t) and y = g(t), both are in algebraic
\begin{pspicture}(-1,-1)(1,1)
\psparametricplot[algebraic,linecolor=green]{0}{TwoPi}{cos(#1*t)*cos(t)|cos(#1*t)*sin(t)}
\Label{#1}
\end{pspicture}
% r = f(Θ) in RPN
\begin{pspicture}(-1,-1)(1,1)
\psplot[polarplot,linecolor=blue]{0}{TwoPi RadtoDeg}{#1 x mul cos}
\Label{#1}
\end{pspicture}
% x = f(t) and y = g(t), both are in RPN
\begin{pspicture}(-1,-1)(1,1)
\psparametricplot[linecolor=orange]{0}{TwoPi RadtoDeg}{#1 t mul cos t PtoC}
\Label{#1}
\end{pspicture}}
\begin{document}
\multido{\i=1+1}{5}{\Draw{\i}}
\end{document}