Why are Fresnel functions still used in the research and implementation of clothoid splines? They cannot represent curves of constant curvature, which has led to a lot of research/implementation complexity. For example, see this paper:


$\dots$that constructs a clothoid spline by finding the shortest path through a graph of possible clothoid/arc/line combinations.

Fresnels are derived by integrating the following curvature function:

$k = 2s$

There are many superior alternatives; I've attached one alternative I came up with to this post, but see Raph Levien's PhD thesis for another:


Why are fresnels still around? Levien's work dates from 2007, and some guy in the early 90s also did research on (polynomial) curvature functions. As far as I can tell, most of the modern clothoid literature is little more advanced than where the literature was in the late 60s – it’s as if people like Levien never published at all. Is this a failure of the peer review system? Or does the fault lie with the way clothoid research is fragmented between many different fields that don't really communicate with each other?

Anyway, here’s the curve I came up with. See Levien's thesis for a more in-depth discussion of why simple fresnels aren’t good enough (as well we his method, which is a bit better than the one here).

Addendum. A Better Euler Spiral Formulation

If our goal is to create a spline whose curvature function is piecewise linear, we can use this curvature function:

$k = k_1*(1.0-s) + k_2*s$

This function interpolates two constants over the interval [0, 1]. If you integrate it, you get these replacements for the fresnel functions:

$th(s) = s(k_2s - k_1s + 2k_1) / 2$

$x(s) = \int_{0}^{s} \sin(th(s))$

$y(s) = \int_{0}^{s} \cos(th(s))$

These functions can represent lines, arcs, and clothoids, and is far easier to work with than if all three types are treated separately.

  • 1
    $\begingroup$ Thank you! I’ve been looking for an alternative to making clothoids with the Fresnel integrals because they blow up on integration, and this seems to work perfectly. Also the Inkscape implementation of Spiro seems to have some stability problems after a few points – at least used to couple years ago... $\endgroup$
    – peterhil
    Dec 29, 2015 at 19:35
  • $\begingroup$ I’m not sure if the last edit is exactly right, but at least it gives circles when k1 equals k2. Using Sympy, I got the following for the integral of k (the function th): th(s) = k1 * s + s ** 2 * (-0.5 * k1 + 0.5 * k2) $\endgroup$
    – peterhil
    Jan 2, 2016 at 17:28
  • 1
    $\begingroup$ Sorry I don't see anything novel here. — How do you evaluate your integrals? I find Taylor series (using complex numbers) work pretty well, and not hard to generate for any polynomial th(), but likely there are better ways. $\endgroup$ Jan 15, 2020 at 18:49


You must log in to answer this question.