Pink 0.9

points2spline.c File Reference

converts a sequence of control points into a spline More...


Detailed Description

converts a sequence of control points into a spline

Usage: points2spline points.txt spline.txt

Description:

Let S be the sequence of control points in points.txt. This program computes a parametric curve P defined by two (in 2D) or three (in 3D) splines that interpolates the points of the sequence S.

If the last point equals the first point, then a closed spline is generated.

The result is given in the form of the list of control points, followed by the set of coefficients for each spline segment.

The input file points.txt contains a list of points under the format:

b nbpoints
x1 y1
x2 y2
x3 y3
...

or:

B nbpoints
x1 y1 z1
x2 y2 z2
x3 y3 z3
...

The output file format is the following for 2D:

c n+1 (where n+1 denotes the number of control points)
x1 y1
...
xn+1 yn+1
C0X1 C0Y1 C1X1 C1Y1 C2X1 C2Y1 C3X1 C3Y1
...
C0Xn C0Yn C1Xn C1Yn C2Xn C2Yn C3Xn C3Yn

and in the 3D case:

C n+1 (where n+1 denotes the number of control points)
x1 y1 z1
...
xn+1 yn+1 zn+1
C0X1 C0Y1 C0Z1 C1X1 C1Y1 C1Z1 C2X1 C2Y1 C2Z1 C3X1 C3Y1 C3Z1
...
C0Xn C0Yn C0Zn C1Xn C1Yn C1Zn C2Xn C2Yn C2Zn C3Xn C3Yn C3Zn

The ith segment (starting from i=0) of the parametric curve P is then defined by:

x(t) = C3Xi * t^3 + C2Xi * t^2 + C1Xi * t + C0Xi
y(t) = C3Yi * t^3 + C2Yi * t^2 + C1Yi * t + C0Yi
z(t) = C3Zi * t^3 + C2Zi * t^2 + C1Zi * t + C0Zi
with t in [i,i+1]

Types supported: list 2D, list 3D

Category: draw geo

Author:
Michel Couprie