< Previous | Next >
December 16, 2006 10:03 PM CST by psilord in category Useless Ideas

A Spline in My Foot

I have always liked to concept of splines. I think they are one of the coolest forms of math simply because they are so generally useful and the pretty picture coefficient for them is quite high.

A while ago, I had used variants of them for a certain type of interpolation related to interpolating between regions of stability in chaotic functions. I needed an interpolation such that in between the regions there was good behavior instead of the wild flailing of pure chaos itself. Here is an example of a variant I made.

You can find much better descriptions on the web about Bezier curves than I am going to give here. Suffice to say, I will simply write the two equations of note, and move on. The first one produces a collection of functions called the Bernstein function:

[Bernstein Equation]

The next one is the Bezier curve function itself in one dimension: [Bezier Equation]

The Bezier function takes a set of control points which dictate the order of the curve(quadratic, cubic, quartic, etc) depending how many control points there are. They are specified in the Pi variable of the above equation. This is the part of the equation with which we are going to have fun. Let's replace the control point with a function which produces control points instead. That's far more fun.

[Modified Bezier Equation]

The variable s needs a little bit of explanation. This variable is kind of like a parametric variable for F(s)i. F must produce a control point of some arbitrary dimensionality according to the designer's wishes for the dimensionality of the curve. For the purposes of this discussion today, we will assume F produces 3 dimensional control points.

Some examples of F could be:

[Example Function 1] [Example Function 2] [Example Function 3]

An interesting thing to see is that in this case, s is used as the domain for the little function in the y axis of the generated control point. So, all three of these curves act like they have been created in an x,y plane, and the z component is for placement of these individual xy planes in "parallel" to each other. Of course, this is quite a restrictive use of these functions, but it doesn't have to be that way. It just happens to be for this example. Also, there may be many more than 3 functions, which just increase the order of the curve.

I bet you are wondering what something like that would look like if a computer program drew it. Fear not, instead of doing something useful with my life like making money or helping the sick, I've written one so you can see what kind of patch surface the above example would create in 3d given varying values of s and t. The white lines are the individual curves as t varies, and each white line is on account of s varying. The green dots are locations on the "control functions", and the green lines are visualization lines to show the typical lines associated with the control points of an individual curve. The rectangular box in the middle bottom is a scale that goes from -2*PI to 2*PI in the x axis, and -1 to 1 in the x and y axes. The coordinate system is left to right is negative to positive x axis, bottom to top is negative to positive y axis, and behind of screen to in front screen is negative to positive z axis. The various functions have been scaled a bit to make them pretty (which are not reflected in the above equations). [Example of Above Equations]

Interesting no? There are some things I haven't yet fully figured out about the surface generated using this method. For example, what kind of a surface is it? Is it continuous, smooth, differentiable? To what extent? An awesome example to put light to these questions comes if you replace F2 with (x, tan(x), 0), and F1, F3 are simply straight horizontal lines in the x,y plane. Of course, there are some dirty scalings going on, but I've left them out (also the green visualization lines) of the examples because they clutter up the equations. So, here is what a stranger patch may look like: [Example Using Tan(x)]

See what I mean about characterizing what kinds of patches these are? They look like they should be integrable and have partial differentials which may describe all sorts of good things like slopes and gradients and whatnot, but due to the tainting of the Bezier method, that might not be true. This might seem like a limitation, but I don't think it is. For example, F may be anything, like an iterated function system, a set of differential equations, other parametric curves, normal functions....

Of course, the next step would be to design some splines to interpolate through each function's control point given some more information like partial differentials at said control point, etc, etc, etc. This would make it very interesting to have, say, a sin wave for the first function, an iterated function converging to a fern, and a quadratic equation for the third equation. You could have a curve interpolate through each one, which might be interesting for a lot of reasons, most of them pretty to look at. As for whether or not that would form a surface, hmm....

I haven't gotten to that part yet. Might never. Depends on how bored I am.

End of Line.

< Previous | Next >