Re: interpolation around a contour [message #19326] |
Thu, 09 March 2000 00:00  |
Mirko Vukovic
Messages: 124 Registered: January 1996
|
Senior Member |
|
|
In article <38C6A585.68AC4E2B@bme.jhu.edu>,
isimon@bme.jhu.edu wrote:
> Dear Group:
>
> This is what I have:
>
> I have an xy array of coordinates for a contour (closed contour if you
> connect the points) that has the following properties:
> - arbitrary number of coordinates, they are generally bigger than
200.
> - coordinates are irregularly spaced.
>
> This is what I need:
>
> I need to interpolate points around the old contour so that
>
> - the number of points = a power of 2 = 256
> - interpolated points are equidistantly spaced from one another.
>
> The original and interpolated contour should have the same perimeter
and
> shape.
>
Several solutions come to mind. As someone already pointed out, you can
calculate the euclidean (straight-line) distance between succesive
points, and use that as a parameter t for a spline interpolation of x
vs. t and y vs. t (with appropriate boundary conditions).
If you take a look at Numerical Algorithms with C by Engeln-Mullges and
Uhlig (Springer-Verlag, ISBN 3-540-60530-4), Section 10.1.3, you will
find a discussion and algorithms on this topic. I believe there is a
version of this book with the code in Fortran
They also consider the case when there are sharp turns in the curve,
where a cirle is fitted to three adjacant points. This is a
generalization of the euclidean distance idea.
Another approach I know of is that of Donald Knuth in his work on font
generation. Knuth uses Bezier curves to connect points, and developed
algorithms to calculate the coefficients of the Beziers. (Bezier's are
a special kind of polynomial, in this case fourth order).
Good luck,
Mirko
Sent via Deja.com http://www.deja.com/
Before you buy.
|
|
|