Tensors are totally useful. However these particular references seem difficult and rather specialized. There must be some elementary reference or cheat sheet on tensors for classical theory of rigid body motion. The classic works on mechanics are by Lagrange and Hamilton.
Adrian Freed <email@example.com>
To: Vangelis L <firstname.lastname@example.org>, John MacCallum <email@example.com>
Cc: Sha Xin Wei <firstname.lastname@example.org>
Date: 2013-07-28, at 9:50 PM
I remember you mentioned finding some documentation that suggested that computing the velocity from successive kinect frames actually computes the velocity at the time between the frames and that they propose to come velocity by skipping a frame so that the midpoint velocity corresponds to a time of the isochronous frame rate.Those ideas represent very course approximations to the correct way of doing this for rigid body motion, the basis of which is described in the attached paper.
Almost :) that information was coming from the biomechanical side of things and was agnostic of the frame types. Since in biomechanics they are concerned of matching specific values to exact visual or other frame representations of movement, they propose to compute velocity every third frame (1st to 3rd) since the actual value of velocity that is calculated represents the 2nd frame and should be attached as information there.Do they propose a parabolic interpolation? In which space?
What I thing you are trying to avoid is a pre-defined space where the velocity calculation takes place. And that is related to what I got about Tensors so far... Tensors are bundles of vectors representing various desirable data from a point which position can be described by a given zero 0 in a Cartesian space. Each Tensor carries the bundle but it does not care about its Cartesian representation or the one to which it is compared to. Calculations between Tensors can be performed regardless of spatial representation and we can translate all data to any given Cartesian coordinate system on demand... is that any close?? In any case I think that the way a formula is applied to accurately measure f.i. velocity is related to how a device gathers the rotation data at the first place so that we connect to its most accurate representation. The biquaternion formula at the paper begins the example using the pitch, yow and roll information (latitude, longitude, roll over the z axis) and the maximum length of the working space which is confusing.Confusing ndeed.
How does this formula translates in practice, and if we apply this method do we need quaternions of two frames (or three frames according to the bio-mechanical scientists) in order to calculate the bi-quat and the velocity vector or the 4x4 rotation matrix? How are these calculated in Kicent? Does it matter?Yes it matters but we are also trying to get the machinery in place to go beyond Kinect and also solve these POV issues.
I would like for example to produce a moving image that has a trace of a ribbon behind multiple positions of the body oriented according to the surface normal.
From: Adrian Freed <email@example.com>
To: Vangelis L <firstname.lastname@example.org>, John MacCallum <email@example.com>
Cc: Sha Xin Wei <firstname.lastname@example.org>, Andy W.Schmeder <email@example.com>
Now we have the dot product, cross product, velocity and acceleration formulae in "o."
building in too many damning assumptions.
Working on Saturday with Teoma I got confirmation of my concerns about the notion of your "self" coordinate system referenced to a single point of the body, i.e. in mid-hips. She asked me to map hip movement so she could stand in one place for part of our piece. I used shoulder/hip distances for this which might not be what you would expect until you realize that the hips and shoulders have to work in counter motion in order for someone not to fall over.
One way of thinking about this is that Teoma can move the several interesint points of origin dynamically. Another more mature way perhaps is screw theory which models multiple connected bodies.
The quick hack without the full screw theory model is to acknowledge the hierarchy of connected limbs with tapering masses. Angular velocities as we have will therefor be useful here, but I think swept areas are probably better. You can weight the vector lengths with masses to get kinetic energy. Now the exercise is to decide which triangles to use for the swept areas. The formula for swept area is half the norm of the cross product but there is a problem here interpreting this as "effort". We have an asymmetry due to gravity.
It is a lot more work to raise a leg than sweep one. The problem is we have been focussing on kinetic energy without incorporating
changes in potential energy. I suspect you can project things to form a triangle with a point on the ground to reflect an area swept that estimates the potential energy change. Even better is to bite the bullet and move everything into tensors. Then you have enough
traction to do things like continuum mechanics
Continuum mechanics is a branch of mechanics that deals with the analysis of the kinematics and the mechanical behavior of materials modeled as a continuous mass rather than as discrete particles. The French mathematician Augustin-Louis Cauchy was the first to formulate such models in the 19th century, but research in the area continues today.
Modeling an object as a continuum assumes that the substance of the object completely fills the space it occupies. Modeling objects in this way ignores the fact that matter is made of atoms, and so is not continuous; however, on length scales much greater than that of inter-atomic distances, such models are highly accurate. Fundamental physical laws such as the conservation of mass, the conservation of momentum, and the conservation of energy may be applied to such models to derive differential equations describing the behavior of such objects, and some information about the particular material studied is added through a constitutive relation.
Continuum mechanics deals with physical properties of solids and fluids which are independent of any particular coordinate system in which they are observed. These physical properties are then represented by tensors, which are mathematical objects that have the required property of being independent of coordinate system. These tensors can be expressed in coordinate systems for computational convenience.and exterior algebra which we need to do vector fields for orientation correlation.
a good intro. to quaternions which along the way explains Hamilton's mistake and why we will be working with Euler/Rodrigues formulations.
"Hamilton, Rodrigues, and the Quaternion Scandal"
Tha attached paper has an interesting idea at the end: a dualquat harmonic oscillator which can describe
You may recall that Shepard's original paper on pitch circularity discusses helical representations for
pitch perception. http://psycnet.apa.org/journals/rev/89/4/305/
This strongly suggests that dualquats could also be used to operationalize motion in musical contexts.
The pitch one is obvious because the mapping is clear and we have lots of well known ways to think of translation and rotation
in this context (e.g. arpeggiated cadences, vamping) but I think there may be some interesting cases where we can use this
for fancier rhythmic things too. For example, in your work on polytempo you can define certain requirements such as events lining up in time as configurations of points on different rigid bodies in motion (one for each meter) that have to be colinear. My intution is that
interpolation with dualquat's will give you better results than the current scheme in tempocurver. It may at the very least give you hints as to how to represent what you are composing in a 3d GUI. I often feel that phase unwrapping would be better understood if people could see it in 3D. With care the information we need can be obtained by casting shadows as I did with Amar for the 3D SDIF editor.
There is of course the question of how to integrate time into the model. You could start by parameterizing the screw parameters as a function of n.deltaT in discrete time signal processing fashion and then drive the system with my relaxation functions (shifted and time scaled sawtooths).
I hope this is good enough. I am slightly afraid that we might want to go all out and do tensors because I have seen time introduced in another paper by forming linear sums of two tensors to represent a reference frame from which the dualquats emerge. I am hoping that dualquats do most of the heavy lifting and that we will be happy with using o.'s existing vector functions with lambda() to define the operations to endow vectors with the appropriate constraints and operations to become tensors.
The code will be less obvious because we don't have operator overloading but most of the papers on tensors end up looking like APL which is not very clear either.
Having developed critiques of periodicity in one essay and being a fan of the point- and line-free geometries of Whitehead, Spencer Brown and others, I am rather embarrassed to be suggesting this strong push into dual-quats, the power tools for leveraging the Greek idolatry of the circle and line. Maybe the way to deal with ghosts is to dance with them?
OK, my last word (today) on this:
So, it is not obvious how to do the Euler, Lagrange equations with dual quaternions which we would need for the velocity acceleration, energy etc.
No worries though: it is tackled in the attached paper.
I added another paper to show off the range of interesting problems tackled with dual quaternions. We can also do physics engines, collision detection etc. rather easily.