Smoothing a curve: bezier curves, b-splines and Alejandro's PenTool Script

David Bovill david at architex.tv
Thu Oct 1 05:56:10 EDT 2009


I'm looking for a handler to smooth out rev graphic curves - you fetch the
points and you interpolate a vaiable number of in between values. I've lost
the script I had to do that, and worse I've forgotten how :) The aim is to
create a general handler like"

getprop graphic_SmoothedPoints [someParams]
>     return the bezier/b-spline smoothed out list of points of a rev based
> curve
> end SmoothedPoints
>

*Quick Research and Links*
I pretty much learnt everything I know about bezier curves from looking at
Alejandro's fab work on eps, Adobe Illustrator import, and bezier curves
(see below).

What I am looking for however is not an editor, but a way to automatically
smooth a curve based on a few parameters. I 'think" from looking at the code
and online references the bezier curve part interpolates between 2 points
based on a couple of vectors.

Alejandro's work represent this as a list of 4 points:

x1,y1,xa,ya,xb,yb,x2,y2

which I believe equate to the 4 points P1,P2,P3,P4 describd here -
http://en.wikipedia.org/wiki/Bézier_curve<http://en.wikipedia.org/wiki/B%C3%A9zier_curve>

stores this additional information along side each point in a rev graphic
curve:  in the format c,C,y,Y,v,V - where I think these values represent
"vertex", and "control", and "colineal handles" for each point. At this
point I get a little lost - so I'm hoping for some input :)

*Splines*
It looks to me that to include the information regarding a series of points
you need to looks at splines, and maybe an algorithm like De
Boor's<http://en.wikipedia.org/wiki/De_Boor%27s_algorithm>?
I certainly never went that far and got reasonable results with something a
lot simpler. Any suggestions?


2006/11/14 Alejandro Tejada <capellan2000 at yahoo.com>

> Hi All,
>
> Download the Stack "New PenTool Script" from:
> http://geocities.com/capellan2000/newPentoolScript.zip
>



More information about the use-livecode mailing list