Rotations

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 14/12/2009 at 11:01, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   11 
Platform:   Windows  ;   Mac OSX  ; 
Language(s) :     C++  ;

---------
I'm using:

  
op->SetPos(op->GetPos()+ (trans ^ op->GetMl()));  

To propel an object along one of its axis (where trans is a vector that represents a rate of movement along a particular axis per frame).

Works a treat:)

I thought I could do something similar with rotations by using:

  
op->SetRot(op->GetRot()+ (trans ^ op->GetMl()));  

Apparently it's a lot more complicated than that, because I don't get the desired behavior.

Think of a plane in flight... that's the type of rotation I'm looking for.  The object I'm trying to drive isn't part of a hierarchy and I'd rather not rely on hierarchy tricks to accomplish this.  Any insight into the wonderful world of rotations would be most helpful:)

thanks,
kvb

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 14/12/2009 at 11:49, xxxxxxxx wrote:

Why are you applying rate of movement to a rotation?  You would want rate of rotation which doesn't involve translation at all but angular momentum.  Now, if you are trying to induce a rotation from the direction vector that trans represents from one position to the next, you'll need to convert it into a delta rotation vector.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 14/12/2009 at 12:11, xxxxxxxx wrote:

Trans was meant to be a different variable in the second line of code.  I just kept it the same in this post for the sake of the reader, to keep the 2 code lines similar to show my train of thought more clearly.  In my code, the second trans variable is actually called victor (an Airplane joke... what a great movie), temporarily of course.  In hindsight, maybe I should have just copied them both exactly from my code:D

So, in code line 2, trans equals a rate of rotation about a particular local axis (it seems no matter what I do it's always calculating the rotations based on the world coordinates).  No matter how the object is oriented in world space, I want this data to always rotate the object explicitly around it's local axis.

sorry for the confusion,
kvb

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 14/12/2009 at 16:26, xxxxxxxx wrote:

Ok, a bit more info.  I had sort of solved this problem in the past using xpresso.  I input the rotation change per frame (for each axis) into the respective local rotation input ports of a child object of the object to be driven.  Then I output that child's global matrix into the local matrix of the parent (driven) object.

So, it looks like I need to find a way to create a matrix that mimics a child of my object (like a ghost) that I can alter with my input data then pump its global matrix into my objects local matrix.