Evolute & Caustic

Envelope of normals (evolute) and specular caustics of classic curves.

About this tool

Choose an example, mode and curve, set the visible parameters, and calculate. Curvature mode shows the evolute: the locus of curvature centers C. Reflection mode shows a point source L and the envelope Q of reflected supporting lines. Move the probe or enter an exact position from 0 to 100%. Position varies the curve parameter linearly, not arc length. The probe updates independently of the displayed curve samples. Clear result keeps the inputs.

LU denotes one freely chosen length unit, used consistently for every coordinate and length. The ellipse is P(u) = (a cos u, b sin u), with u from 0 to 2π. A circle is the case a = b. The parabola is P(u) = (u, ku²), and the line is P(u) = (u, 0), both with u from −Half-span to +Half-span. The coefficient k has units 1/LU. The source is L = (Source x, Source y).

Write T = P′/|P′| for the unit tangent and N for its left normal. Signed curvature is κ = det(P′, P″)/|P′|³; the curvature radius is 1/κ and its center is C = P + N/κ. Curvature is positive for the displayed ellipse and parabola parameterizations. A line has κ = 0 and no finite radius or center. The normal and curvature circle correspond to the selected P; the circle is clipped at the frame. Open center markers remain visible when the evolute collapses to a single point, as for a circle.

For the ellipse, C = ((a² − b²)cos³u/a, (b² − a²)sin³u/b). For the parabola, C = (−4k²u³, 1/(2k) + 3ku²). These centers describe local bending; they are distinct from the reflection caustic.

For reflection, the incident unit direction is U = (P − L)/|P − L| and the reflected direction is r = 2(U·T)T − U. Neighboring reflected lines have the form P(u) + λr(u). Their envelope satisfies det(P′ + λr′, r) = 0, giving λ = det(P′, r)/det(r, r′) and Q = P + λr. λ is a signed distance: nonnegative values place Q along the reflected ray, negative values place it on the backward extension. Virtual caustics and the selected backward extension are dashed. The incident and reflected arrows show the actual directions; the few additional rays illustrate the same family.

If the source coincides with P, reflection is undefined. A vanishing denominator gives no finite envelope point: locally parallel rays when the numerator is nonzero, or a degenerate line family when both vanish. Numerical classification uses a relative threshold of 10⁻¹²: |det(r, r′)| ≤ 10⁻¹²·max(1, |r′|), with |det(P′, r)| ≤ 10⁻¹²·|P′| identifying the degenerate case. Source contact uses distance ≤ 10⁻¹²·max(1, |P|). Thus nearly parallel lines can also be classified as lacking a finite point; this does not claim exact parallelism.

The ellipse-focus example reflects toward the other focus. A parabola illuminated from its focus has parallel reflected rays. A line with an off-line source has a virtual point caustic at the mirrored source, despite zero curvature. For example, a source at (0, 1) above y = 0 gives Q = (0, −1). A source on the line makes the supporting-line family degenerate away from source contact.

The square frame uses equal x and y scales. It includes the curve and evolute in curvature mode, or the curve and source in reflection mode, with a total 24% margin. Unbounded caustic branches are clipped and separated at detected poles and singularities. Exact probe coordinates remain available even outside the frame. The 721 uniformly parameterized display samples do not guarantee accuracy near caustic poles. This is one reflection at the tangent, without occlusion, further wall contacts, intensity, diffraction or refraction; it is not a real optical design calculation.

Input limits are a, b and Half-span from 0.2 to 3 LU, k from 0.01 to 2 per LU, and source coordinates from −5 to 5 LU. All calculations remain in your browser.

Sources: James R. King, Investigating the Geometry of Curves Dynamically; Robert Jantzen, Explicit equations for the evolute of an ellipse.