mathclothoid

Clothoids

What are Clothoids, Euler Spirals or Cornu Spirals. Parametric curves with linear curvature.
11/8/2025
5 minutes
Loading Python runtime…

A clothoid (also known as an Euler Spiral or Cornu Spiral) is a parametric curve with a distinctive property: its curvature changes linearly with respect to arc length. This makes it invaluable in applications requiring smooth transitions, such as highway design, railway tracks, and computer graphics.

Understanding Parametric Curves

A Parametric Curve represents a curve using a third variable called a parameter, usually time tt or arc length ss. Instead of y=f(x)y = f(x), we have:

x=f(t),y=g(t)x = f(t), \quad y = g(t)

As tt changes, the point (x(t),y(t))(x(t), y(t)) traces out a curve. This decouples the geometry from coordinate axes, the curve's shape doesn't depend on how xx happens to progress.

Why Not Just y=f(x)y = f(x)?

Parametric curves can model shapes that fail the vertical line test, circles, loops, self-intersections, and spirals. These cannot be expressed as single-valued functions y=f(x)y = f(x).

Relationship to Cartesian Functions

Every "normal" function y=f(x)y = f(x) can be written parametrically: (x=t,y=f(t))(x = t, y = f(t)). These are called Cartesian Functions. However, the converse isn't true, most parametric curves cannot be reduced to y=f(x)y = f(x).

Parametric functions are a higher abstraction that focuses on the relationship between xx and yy through a free parameter, describing movement, shape, and path independently of coordinate constraints.

The Defining Equations

Clothoids are defined using Fresnel Integrals:

x(s)=0scos(At22)dty(s)=0ssin(At22)dt\begin{aligned} x(s) &= \int_0^s \cos\left(\frac{A t^2}{2}\right) dt \\ y(s) &= \int_0^s \sin\left(\frac{A t^2}{2}\right) dt \end{aligned}

Where:

  • ss is the arc length (how far along the curve we've traveled)
  • AA is a constant controlling how quickly curvature changes
  • The curvature at any point is κ(s)=As\kappa(s) = As, linear in arc length!

When A=1A = 1, we call this the Normalized Euler Spiral. Its Fresnel integral values are widely tabulated, making computation very efficient.

Loading calculator...

Understanding Curvature

Curvature κ\kappa quantifies how sharply a curve bends at each point. It's defined as:

κ(x)=y(x)(1+(y(x))2)32\kappa(x) = \frac{|y''(x)|}{\left(1 + (y'(x))^2\right)^{\frac{3}{2}}}

The radius of curvature RR is simply R=1κR = \frac{1}{\kappa}. At any point, this defines the osculating circle, the circle that best "kisses" the curve at that point.

CurvatureRadiusVisual
Large κ\kappaSmall RRSharp bend (tight circle)
Small κ\kappaLarge RRGentle curve (almost straight)
κ=0\kappa = 0R=R = \inftyPerfectly straight

The clothoid's magic: it provides a smooth transition from κ=0\kappa = 0 (straight) to any desired curvature, with no abrupt changes.


General Clothoid Segment

For practical applications, we need clothoids positioned and oriented in space. A general clothoid segment requires:

ParameterSymbolDescription
Start position(x0,y0)(x_0, y_0)Where the curve begins
Initial angleθ0\theta_0Tangent direction at start
Initial curvatureκ0\kappa_0Starting curvature (often 0)
Segment lengthLLHow long the curve extends
Curvature rateAAHow fast curvature changes: dκds\frac{d\kappa}{ds}

The parametric equations become:

x(s)=x0+0scos(θ0+κ0t+At22)dty(s)=y0+0ssin(θ0+κ0t+At22)dt\begin{aligned} x(s) &= x_0 + \int_0^s \cos\left(\theta_0 + \kappa_0 t + \frac{A t^2}{2}\right) dt \\ y(s) &= y_0 + \int_0^s \sin\left(\theta_0 + \kappa_0 t + \frac{A t^2}{2}\right) dt \end{aligned}

With curvature at any point: κ(s)=κ0+As\kappa(s) = \kappa_0 + As

Loading Python runtime…
0.00
0.00
0.00
0.00
1.00
5.00
Loading calculator...
0.00
0.00
0.00
0.00
1.00
5.00
© Raideno.