HomeArticlesMathematics

Rose Curves: Why r = cos(2θ) Draws 4 Petals, Not 2

A single polar equation, r = a·cos(kθ), traces a flower of petals whose count depends on a surprising parity rule hidden in k.

mysimulator teamUpdated June 2026≈ 6 min read▶ Open the simulation

A curve defined in polar coordinates

Most curves on this site are defined as y=f(x) or by a parametric pair (x(t), y(t)). The rose curve instead lives naturally in polar coordinates: a distance r from the origin at each angle θ, following the simple rule r = a·cos(kθ) (or the sine variant, which is the same curve rotated by 90°/k). As θ sweeps from 0 to 2π, the radius oscillates between +a and -a, tracing out a flower of loops called petals - the shape is also known as a rhodonea curve, from the Greek for rose.

live demo - a rose curve tracing its petals in real time● LIVE

Why negative r matters, and the parity rule

When r becomes negative, the point is plotted in the opposite direction from θ - at angle θ+π instead of θ. This convention is the key to the curve's most counter-intuitive property: the number of visible petals depends on whether k is an integer and whether it is even or odd, not simply on the value of k itself.

k odd integer   →  k petals (negative-r loops retrace existing petals)
k even integer  →  2k petals (negative-r loops draw new petals)
k = p/q rational, lowest terms → p petals if p·q odd, else 2p petals

For odd k, running θ through a second half-turn (π to 2π) produces negative r values that land exactly on top of the petals already drawn in the first half-turn, so only k petals are ever visible even though the trace runs through 2π of angle. For even k, the negative-r values land in genuinely new places, doubling the petal count to 2k. This asymmetry surprises almost everyone the first time they see it: r=cos(2θ) draws a four-petalled rose, not a two-petalled one.

Rational k: a Grandi rose that takes many turns to close

If k is not an integer but a rational number p/q in lowest terms, the curve is no longer closed after a single 2π sweep - it needs θ to run through q·2π (if p·q is odd) or q·π (if p·q is even) before it returns exactly to its start and stops overlapping new territory. These are sometimes called Grandi roses after Guido Grandi, who studied them in the early 18th century and first noted the petal-counting parity rule. As q grows, the curve needs many more revolutions to close, and for k irrational it never closes at all - the trace winds forever, filling the annulus between r=0 and r=a with an increasingly dense, never-repeating pattern, much like the irrational-ratio hypocycloids elsewhere on this site.

Where rose curves sit inside the wider polar-curve family

Rose curves are a special case of the broader class of curves expressible as r=f(θ) in polar coordinates. Setting k=1 with a sine variant gives a plain circle passing through the origin; letting the coefficient depend differently on θ instead of just scaling it gives spirals (r=aθ, the Archimedean spiral) instead of petals. What makes the rose distinctive is the periodicity of cos(kθ) forcing the curve back through the origin every time kθ crosses an odd multiple of π/2 - each such crossing is a petal boundary, the point where the curve touches the pole and reverses direction.

Converting to Cartesian and drawing it

To render the curve on a canvas, convert each polar sample to Cartesian coordinates directly: x = r·cos(θ), y = r·sin(θ), with r computed fresh from a·cos(kθ) at each step. The demo samples θ in small increments up to the curve's actual closing angle (computed from k's numerator and denominator via the parity rule above, not just assumed to be 2π), so curves with rational non-integer k close correctly instead of being cut off mid-petal or endlessly overdrawn.

for (let t = 0; t <= thetaMax; t += dt) {
  const r = a * Math.cos(k * t);
  const x = cx + r * Math.cos(t);
  const y = cy + r * Math.sin(t);
  drawLineTo(x, y);
}

Frequently asked questions

Why does r = cos(2θ) draw 4 petals instead of 2?

Because k=2 is even. For even integer k, the negative-r values produced in the second half of the θ sweep land on new positions rather than retracing existing petals, doubling the visible petal count from k to 2k. Odd k does not have this doubling, since its negative-r loops fall exactly on top of petals already drawn.

What happens if k is not a whole number?

If k=p/q is a rational number in lowest terms, the curve needs several full revolutions of θ (not just one 2π sweep) before it closes back on its starting point, with the exact number of turns and final petal count set by p and q. If k is irrational, the curve never closes and traces a denser and denser pattern forever.

Is a rose curve the same as a flower-shaped Lissajous figure?

No, they are different constructions that can look superficially similar. A rose curve is a single polar equation r=a·cos(kθ); a Lissajous figure comes from two independent sinusoidal motions in x and y with a frequency ratio and phase offset, plotted in Cartesian coordinates, and does not pass through a fixed pole the way every rose petal does.

Try it live

Everything above runs in your browser — open Rose Curve and change the parameters while it is running. Nothing is installed, nothing is uploaded, the whole model lives in one tab.

▶ Open Rose Curve simulation

What did you find?

Add reproduction steps (optional)