Spline Representations XII
Augmenting an irregular spline to show it’s inconstant...and the derivation of the Hildebrand parameterization formulas.
Yesterday, we constructed a natural spline on irregularly spaced points ABCD.
What if we add point E to the mix? We’d need to add a new function The condition that In MatLab, I enter the 11x12 augmented coefficient matrix like so:
>> A=[216 6 0 0 0 0 0 0 0 0 0 7; 0 0 1728 144 12 0 0 0 0 0 0 -9; 0 0 0 0 0 8 4 2 0 0 0 11; 108 1 0 0 -1 0 0 0 0 0 0 0; 0 0 432 24 1 0 0 -1 0 0 0 0; 36 0 0 -2 0 0 0 0 0 0 0 0; 0 0 72 2 0 0 -2 0 0 0 0 0;0 0 0 0 0 48 2 0 0 -2 0 0; 0 0 0 0 0 0 0 0 64 16 4 -3;0 0 0 0 0 12 4 1 0 0 -1 0; 0 0 0 0 0 0 0 0 24 2 0 0];
Solve the system like so: >> B = rref(A); >> c12=B(:,12) c12 = -0.0248 2.0599 0.0363 -0.4466 -0.6198 -0.1426 0.8607 4.3490 0.2135 -2.5615 6.0806
>> bin_1=[1 6]; >> bin_3=[1 -12]; >> bin_4=[1 -14]; >> bi_square_1 = conv(bin_1,bin_1); >> bi_square_3 = conv(bin_3,bin_3); >> bi_square_4 = conv(bin_4,bin_4); >> bi_cube_1 = conv(bin_1,bi_square_1); >> bi_cube_3 = conv(bin_3,bi_square_3); >> bi_cube_4 = conv(bin_4,bi_square_4);
Pad out the vectors to be compatible: >> bin_1=[0 0 bin_1]; >> bin_3=[0 0 bin_3]; >> bin_4=[0 0 bin_4]; >> bi_square_1 = [0 bi_square_1]; >> bi_square_3 = [0 bi_square_3]; >> bi_square_4 = [0 bi_square_4];
and build the standard coefficient array for each cubic spline: >> spline1=c12(1)*bi_cube_1+c12(2)*bin_1+[0 0 0 -7] spline1 = -0.0248 -0.4463 -0.6178 0.0041 >> spline2 = [c12(3) c12(4) c12(5) 0] spline2 = 0.0363 -0.4466 -0.6198 0 >> spline3=c12(6)*bi_cube_3+c12(7)*bi_square_3+c12(8)*bin_3+[0 0 0 -9] spline3 =
-0.1426 5.9939 -77.9052
>> spline4=c12(9)*bi_cube_4+c12(10)*bi_square_4+c12(11)*bin_4+[0 0 0 2] spline4 = 1.0e+003 * 0.0002 -0.0115 0.2033 -1.1710
And then plot: >> x1=-6:.1:0; >> x2=0:.1:12; >> x3=12:.1:14; >> x4=14:.1:18; >> figure >> plot(x1,polyval(spline1,x1), >> hold on >> plot([-6 0 To compare these, we superimpose the first graph on this: Do you see the difference in the BC splines grinning out at you?
To see how the Hildebrand parameterization doesn’t suffer this vicissitude, let’s take up his outline of the algorithm for generating a smooth curve through the points Pk and Pk+1.
Let’s flesh this out a bit.
In order to carry out the first two steps, we seek a parameteriations (1.1)
and (1.2)
These are the conditions we need to meet (1.3) Combining equations 1.1, 1.2 and 1.3, we get (1.4) These are pretty easy to solve for the x coefficients: (1.5) and by symmetry, the y coefficients have exactly the same form (1.6) So given a set of four (x, y) coordinate pairs,
we can plug them into the above formulas to get the quadratic
parameterizations and then weight these on (1.7) These can simplified by doing a little expansion/collection like so (1.8) This is still on the interval for t in [0, 1].
It remains to figure out what to do about the first and last intervals.
If the curve is not closed, don’t bother computing a new
curve, just use
If the curve is closed, find the parameterization through P1
and P2 by using
k = 1 equations 1.8 with
|