Skip to content

French Curve

11 messages · Martyn Plummer, Marc Schwartz, (Ted Harding) +4 more

#
dream> Dear R experts, Did someone implemented French Curve
    dream> yet?  Or can anyone point me some papers that I can
    dream> follow to implement it?

Are you talking about "splines" ?

I vaguely remember having read that in the distant past, splines
were sometimes called "French curves".


There's lots of splines functionality in the basic 'stats'
package, in the recommended 'mgcv' package and even more in
quite a few other packages.


    dream> thanks in advance for your help.

You're welcome,
Martin Maechler, ETH Zurich
#
On Fri, 2005-04-01 at 09:30 +0200, Martin Maechler wrote:
I found this:

G. Wahba and S. Wold, "A completely automatic french curve: Fitting
splines by cross validation," Commun. Statist., vol. 4, no. 1, pp. 1-17,
1975.

I remember that my father had a French curve: it was a plastic template
used for drawing which had several smooth edges of varying curvature.
You could use it to draw a wide variety of curved shapes.  No doubt the
French called it something else.
#
On Fri, 2005-04-01 at 17:00 +0200, Martyn Plummer wrote:
http://mathworld.wolfram.com/FrenchCurve.html

Martyn,

My dad had one as well, along with his slide rule...then he later "moved
up" to a TI DataMath as I recall... ;-)

These days he is retired (was a medical school professor) and works on a
G5.

Best regards,

Marc
#
On 01-Apr-05 Martyn Plummer wrote:
I still have some, from the 1950s ... The curves in the edges
are supposed to be segments of logarithmic spirals (which
ensures a kind of self-similarity on different scales).
A nice picture is at

http://missourifamilies.org/learningopps/
learnmaterial/tools/frenchcurves.htm

Splines, in the drawing-office sense, were long narrow
(about 1/4 inch wide) strips of thin springy metal with,
along their length, little flanges at right-angles to the
plane of the strip. Each little flange had a hole in it.

The principle was that you would pinthe flanges to the
drawing-board at chosen points by pushing drawing-pins
through the holes. The metal strip then stood up at a
right-angle to the paper.

The flanges were attached in such a way that you could
slide them along the metal strip. (Or you could use a
strip without flanges, and special pins which raised
little pillars up from the paper, against which the
spline would press.)

The end result was that the metal strip then defined
a curve on the paper, and you could run a pencil along
it and draw a curve on the paper (taking care not to
press too hard against the metal, to avoid deforming
the curve).

By virtue of the laws of elasticity, the curve delineated
by the metal strip had a continuous second derivative, i.e.
what modern kids call a second-derivative-continuous
piecewise cubic spline.

We have not moved on.

Happy whatever it is to all,
Ted.


--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 01-Apr-05                                       Time: 20:07:59
------------------------------ XFMail ------------------------------
#
On Fri, 2005-04-01 at 20:07 +0100, Ted.Harding at nessie.mcc.ac.uk wrote:
<snip>
Ted,

That sounds like the flexible curves that I found earlier, while
Googling for an example of a French Curve and found the Mathworld link:

http://www.artsupply.com/alvin/curves.htm

and

http://www.reuels.com/reuels/product21021.html

Marc
#
On 01-Apr-05 Marc Schwartz wrote:
Not quite, I think, Marc. The principle of the spline as I
described it meant that the shape of the curve between the
fixed points was the static-equilibrium shape determined
by the elasticity of the metal (though some kinds were also
made of thin strips of laminated wood, but worked on the
same principle). They were therefore typically used for
interpolating "mathematically" between given points.

The curves shown on those web-site operate differently:
they are simply flexible, and can be bent by hand to any
shape, rather like modelling clay, which they then hold
by virtue of how they are constructed (see especially
the description on the 'artsupply' website: the lead core
gives the mouldability and was not springy, and the outer
plastic covering makes them smoother to use). (I've used
these too, once upon a time).

Best wishes,
Ted.


--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 01-Apr-05                                       Time: 22:53:17
------------------------------ XFMail ------------------------------
#
On Fri, 2005-04-01 at 22:56 +0100, Ted.Harding at nessie.mcc.ac.uk wrote:
Ted,

Thanks for the clarification. I think that I have a better mind's eye
view of the differences, combining your additional comments with your
initial explanation. The mention of laminated wood clicked and took my
mind back to some physics experiments with bi-metals...

Regards,

Marc
1 day later
1 day later
#
> Does it sound like spline work do the job? It would be hard
    > to persuave him to use some modern math technique but he
    > did ask me to help him implement the French Curve so he can
    > do his work in Excel, rather than PAPER.

Splines are useful for interpolating points with a continuous
curve that passes through, or near, the points.  If you are
looking for a way to estimate a curve with a noise component
removed, I think you'd be better off filtering your data, rather
than interpolating with a spline.  Median (or mean) filtering may
give  results similar to those from your chemist's manual
method.  That is easy to do with running from the gtools
package.  The validity of this is another question!

require(gtools)

x <- seq(250)/10
y1 <- sin(x) + 15 + rnorm(250)/2
y2 <- cos(x) + 12 + rnorm(250)

plot(x, y1, ylim=c(0,18), col='grey')
points(x, y2, pch=2, col='grey')
points(x, y1-y2, col='grey', pch=3)

## running median filters
lines(running(x), running(y1, fun=median), col='blue')
lines(running(x), running(y2, fun=median), col='blue')
lines(running(x), running(y1, fun=median)-running(y2, fun=median), col='blue')

## running mean filters
lines(running(x), running(y1), col='red')
lines(running(x), running(y2), col='red')
lines(running(x), running(y1)-running(y2), col='red')

f <- sin(x) + 15 - ( cos(x) + 12 )
lines(x, f)

Mike
#
>> Does it sound like spline work do the job? It would be
    >> hard to persuave him to use some modern math technique
    >> but he did ask me to help him implement the French Curve
    >> so he can do his work in Excel, rather than PAPER.

    Michael> Splines are useful for interpolating points with a
    Michael> continuous curve that passes through, or near, the
    Michael> points.

not only!  (see below)

    Michael> If you are looking for a way to estimate a
    Michael> curve with a noise component removed, I think you'd
    Michael> be better off filtering your data, rather than
    Michael> interpolating with a spline.  

yes  for  "rather than interpolating"
no   for  "with a spline"

There's the  smooth.spline()   *smoothing* spline function (with
predict() methods, even for 1st and 2nd derivatives) which is
liked by `many' and even prefered to other ``filters'' for
diverse reasons, notably for the fact that spline smoothing
corresponds to linear "filtering" with a curvature-adaptive
varying bandwith.

    Michael> Median (or mean) filtering may give results
    Michael> similar to those from your chemist's manual method.
    Michael> That is easy to do with running from the gtools
    Michael> package.  The validity of this is another question!

Median filtering aka "running medians" has one distinctive
advantage {over smooth.spline() or other so called linear smoothers}:
   It is "robust" i.e. not distorted by gross outliers.
Running medians is implemented in runmed() {standard "stats" package}
in a particularly optimized way rather than using the more general
running(.) approach of package 'gtools'.

Martin Maechler, ETH Zurich
#
On Apr 6, 2005, at 1:48 AM, Martin Maechler wrote:
Median smoothing splines are also implemented in the quantreg
package see ?rqss, but they produce piecewise linear fitting so
they may not appeal to those accustomed to french curves.


url:	www.econ.uiuc.edu/~roger        	Roger Koenker
email	rkoenker at uiuc.edu			Department of Economics
vox: 	217-333-4558				University of Illinois
fax:   	217-244-6678				Champaign, IL 61820