Transforming something using a "delta matrix"

Started by
5 comments, last by JohnOwens 14 years ago
Hi guys, I want to be able to apply a delta transformation matrix to a positional vector and I don't know how to compute this "delta" matrix. The delta matrix is effectively the change between one frame and the next of an object (A) so if you apply it to another object (B) it transforms by the same effectively making the (B) a child of (A) but it's position is stored in worldspace rather than the local space of (A). I don't care about anything other than the position of (B) as it's a particle if that makes the maths any easier or less expensive to compute. From writing a physics engine 10 years ago I almost remember that you could use something called the tilda operation for this but I can't remember exactly what it was or even if I'm correct in thinking this. Thanks John.
Advertisement
I'm not sure I understand the question. Do you have an object B whose position is specified in world space, and you want to transform that position so it becomes relative to A's local space?

In that case, you should transform the position by the inverse of A's world transform.
Quote:Original post by JohnOwens
it transforms by the same effectively making the (B) a child of (A) but it's position is stored in worldspace rather than the local space of (A).


I also am really unsure what you're referring to. Could it be the Lie adjoint operator?

I'd forgotten the precise definition of this; I found it surprisingly in the documentation for a C++ class here.

To paraphrase the above source:
Quote:This is the operation such that for an element B in SE(3) and v in se(3),
exp(Adj_B(v)) = B exp(v) B^{-1}


where exp is the exponential map from so(3) to SO(3).
OK I'll try to explain this better :-)

Basically all the positions and transformation matrices are in world space.

I make changes to object A calling functions by rotating around local axis and translating etc.

I want to apply these same transformations to object B however all I have to work them out is the previous transformation matrix before these transformations of A and the resultant transformation matrux after these transformations.

I hope this makes it clearer.
In the following I'm using column vectors.

If A denotes the frame of object A before the additional transformations are done, then let
A' := M * A
be the frame after being transformed by M, where M may be composed of as many particular transformations as wanted:
M := Mn * ... * M1

If I understand the OP correctly, then the same should happen to object B, so that
B' := M * B

If M is computed separately, it can simply be applied, of course. If instead just A and A' are known, then from the first formula after multiplying with A-1 on the right we get
A' * A-1 = M
This can be understood as "delta matrix", I think.

Is that what you're looking for? However, I have no real clue what you mean with "tilda operation", except perhaps it is used as inversion (although I know it as inversion of sets only ...)
If the particle B is always acting like a child to A, then you should probably specify the coordinates of B with respect to A, rather than with respect to the world.
Thanks haegar

That was exactly what I was looking for and yea that's what I called the tilda operation. I can also do a quick inverse using just the transpose as there won't be any scaling.

btw - I can't specify the particles in local space due to the way the particle system is written.

This topic is closed to new replies.

Advertisement