| x0 0 0 |
Mfrom = | 0 y0 0 |
| 0 0 1 |
| xn 0 0 |
Mto = | 0 yn 0 |
| 0 0 1 |
Now, when we look at Mfrom Mto what we often really want is to deal with
the parametric space Mparm.
| alpha 0 |
Mparm = | 0 1 |
This matric, Mparm, is actually useful to change the part of the curve or
line we want to look at.
However, this assumes the path is not important. If the path is
important you may want instead Mpath.
| P0 |
| P1 |
Mpath = | P2 |
| . |
| . |
| Pn |
| 1 |
The points are listed, it is assumed that the x and y values are on the
diagnal of the matrix and the off diagnal elements are zero.
So for a two dimensional space points, Mpath would be a (2*(n+1)+1)*(2*(n+1)+1)
sized matrix.
If you are working in 3D space, above still works, but is a little bigger.
If you have Mpath, it is easy to write a extract_polyline(Mpath) to get
the ordered list of points.
You may also have values off the diagnal to indicate rotations, scaling
and other operations. Then you might want extract_curve(Mpath) or
you may want to draw the curve dirctly from the matrix
draw_curve(Mpath).
A matrix such as Mpath allows you to reorder the path taken, addjust the point
locations, change the relationships between the points and other items.
When we describe objects, we normally need more than the two or three spacial dimensions. If we have a cube, we may have attached to it, its color, how much it is rotated (in rotaion(x), rotation(y), rotation(z) and polar coordenents rotation(around axes) rotation(up)) and other properties. Eventhough rotation can be described in terms of the normal homogenous coordent system, it is nice to have this information as a dimension. Then you can use normal matrix operations to addjust, say the location and the amount of rotation, both simplly and clearly. I am sugesting that you just add these items to the points as additional dimensions. Then the from to matrix Mfromto or the path matrix describes the changes durring the motion from start to end.
If you want a number of objects moving, you might have the position (x,y,z) and its inertia (delta-x, delta-y, delta-z) for additional dimensions. The inertia terms make it easer to build a movie of the actions, because much of the interframe movement is described. Then it would be simple for the model to show movement of the objects over time. Another item that can be a real use is a parametric value driving the model under the object. For example you might have a shape parmater. So that shape(apha) will morph from one shape to another as the values of alpha are changed. Just add this as an addition dimension to the point. You will need to exersise care with these values, because, they may only be meaningful in a restircted range of values. Sometimes this is solved by pinning the values (to preset max or min) after the values get outside of a set range. If the items represent loops in a movie, the value could just be translated back into the loop's range by doing modular arithmatic.
You might be building a world with all sorts of items moving, each in their own time. For example two marching squads or sets of cars and people at an intersetion. For each item in the world you pick from a set of "movies". A movie is an object that does something. For each of these there is a parameter alpha (0<=alpha<=1). In addtion we have time for starting the movie and for stopping it. Then a point might be (x,y,z,rotation-s,rotation-y,rotation-z,start-time, stop-time,alpha). The matrix of all of these points, simular to the Mpath would then include all of the objects and their 9 dimensions. This would allow you to adjust the events and their timing to produce your desired effect. If you take the suggestion literialy, this would be a hughe matrix. We probably would not acutaly build this, but would find ways to get these effects as if we had the full matrix.
Another area that would be able to use this type of notation is visualization. For example, with a path matrix, Mpath you could interchange time and space. This probably will produce some reasonable visualization of change overtime. Since there is much more flexablity than you might want, you will have work at finding transformations that show the information you want and are realatively easy to interpret.
Another view of this is what is known as NonLinear Editing (NLE) for video. This is the process of taking a long video, cutting into small chunks, and placing parts of these into a final order for an edited video. In this case a point could be (start-time,stop-time). The matrix of these points (in Mpath style) would allow describing the NLE results. Not only that, but the matrix could be used to scale parts to be played faster or slower.
You may want to interchange time and space in an image. For example, you may have a movie loop of a storm track. This is often shown as a repleating loop. You may want to draw the store track in a stactic image. Specify the start time and end time of the loop. For each point we might add start time and stop time. For anything in the image that does not change, the start-stop times would be the the start and end time of the loop. For each point have the 2D location (x,y) and the times (start,end). Or P=(x,y,start,end). If you apply a transformation to the time part you could change the movie to a static image (redrawn over time). If you wanted to take some spacial informaiton, it could also be converted into time. For example, let us add to our basic point structure the spacial informaiton of miniam distance to a point out of a set of points. Then as the original movie loop plays, we could false color the some track point with the closeness metric to a point in the set. That is the false coloring would be changing over time. In this case you could have left the track colored with the false coloring. However, you may want to see the change over time with the movie effect.