Cusp Heart
y = abs(x)^(2/3) + 0.9 · sin(51.9x + t) · sqrt(3 − x²)
Open in the app The dials and keys named below are the app's.
What it draws
Two pieces make the picture. abs(x)^(2/3) is a curve with a sharp point at the origin. Its slope is ⅔·abs(x)^(−1/3), which runs away as x → 0, so both branches arrive vertically and meet in a cusp rather than a rounded minimum.
The second piece is 0.9·sin(51.9x + t)·√(3 − x²), a very fast zigzag held inside an envelope. Crests are 2π/51.9 ≈ 0.121 apart. The root is not a real number past |x| = √3 ≈ 1.73, so the curve stops there and the outer parts of the plot stay empty. Across the 3.46 it does occupy the line crosses the figure some 57 times, and the eye reads it as a filled shape.
The heart
The outline is the pair of envelopes y = abs(x)^(2/3) ± 0.9·√(3 − x²). That is an ellipse of half-width √3 ≈ 1.73 and half-height 1.559, with every point lifted by the cusp term. Lifting is what makes it a heart. The cusp term adds nothing at x = 0 and lifts every neighbour, so the top branch is left with a V at (0, 1.559), the dimple. It rises to 2.273 at x ≈ ±1.03, the two lobes. The bottom branch keeps its low point at (0, −1.559), the tip, and the two branches meet where the ellipse closes. MathWorld's sixth heart curve, x² + (y − (x²)^(1/3))² = 1, is the same construction on a circle.
The clock enters only inside the sine. A point of fixed phase satisfies 51.9x + t = C, so the zigzag creeps to the left at 1/51.9 ≈ 0.019 units per second. Each point of the line meanwhile completes its cycle in 2π ≈ 6.28 seconds: the outline holds still and the fill shimmers inside it.
Try
- Front in the deck: the heart face on, which is the view the formula is built for.
- Slow the zigzag down to abs(x)^(2/3) + 0.9·sin(12x + t)·√(3 − x²): crests 0.524 apart, few enough to count, and the envelope stops being a fill.
- Draw the outline alone, abs(x)^(2/3) + 0.9·√(3 − x²): the upper envelope, cusp and lobes and all, with no sine to hide it.
- Change the 3 under the root to 3.3: a wider heart, out to |x| = 1.82.
- Set Ribbon depth to 1: one curve instead of many, so the zigzag can be followed.