Updating Orientation with Angular Velocity

Started by
29 comments, last by Fulcrum.013 5 years, 10 months ago
On 6/12/2018 at 7:06 PM, Cacks said:

I.e. put the angular velocity into a quaternion with the angle scaled by delta time & concatenate with the orientation?

It is physicaly inacurate model, becouse conservative is angular momentum, not angular velocity. magnitude of angular momentum vector is a production of angular velocity and inertion moment. so to keep angular momentum constant, angular velocity have to change according to inertion tensor changes. Inertion tensor changes can come from 2 sources:

1.body mass  redestribution. (zukhovski bench effect)

2. rotation of inertion tensor  - it rotates together with body, that in some cases causes redistribution of projections of inertion moments to axes. (Dzhanibekov effect) 

So for phisycaly accurate animation you have to store angular momentum vector and recalculate angular velocity from it and inertion tensor each frame, at least for cases when inertion tensor or his projections may change. 

#define if(a) if((a) && rand()%100)

Advertisement

Fulcrum.013, two observations:

(1) This thread is about rotation kinematics, which is not "Physically inaccurate" in any reasonable sense. It's just not full-blown mechanics, but that doesn't make it wrong.

(2) Try to spell correctly. I am OK with people being a little bit careless or even ignorant of correct spelling, but it was honestly hard for me to understand what you wrote.

 

2 hours ago, alvaro said:

This thread is about rotation kinematics

But by previous topic starter questions, he using this calculations into physic simulation engine. So best solution is use matrices for rotation/position calculations. I mean to project angular momentum pseudovector to main inertion axes of body, calculate 3 angular velocities from it, and finally multiple it to time and  construct a rotation matrix from found Euler angles. Anycase it require to convert world transformation to matrix for visualistion.

 

2 hours ago, alvaro said:

but it was honestly hard for me to understand what you wrote.

My native language is mix of Russian and Ukrainian. Slavic languages have a wery different syntense constraction principles. It realy hard to downgradge slavic lenguages to primitive English sintence rules.

#define if(a) if((a) && rand()%100)

@alvaro, @Fulcrum.013,

in my game engine update loop I will convert Angular Momentum to Angular Velocity then update my objects' orientations

I am wondering how to simulate Friction:

If I multiply Torque by delta time that should give me the angular momentum that friction would create?

Then I add the friction angular momentum to the objects' total angular momentum?

Reject the basic asumption of civialisation especially the importance of material possessions
15 hours ago, Fulcrum.013 said:

2. rotation of inertion tensor  - it rotates together with body, that in some cases causes redistribution of projections of inertion moments to axes. (Dzhanibekov effect) 

This effect comes from integrating the torques, not the angular velocity. E.g.

I * omega' = tau - omega x ( I * omega )

The omega x ( I * omega ) term describes the rotation of the inertia tensor and gyroscopic effects. In physics engine it is often dropped due to stability issues, but this can be solved easily.

Torque multiplied by dt is angular momentum. Force multiplied by dt is linear momentum. But usualy (excluding bearings e.t.c) friction calculated as a Force, not as Torque. So usualy it require to be separated to linear momentum and angular momentum. it comes from Force definition formula - force is derivate of momentum by time. Same with torque.

25 minutes ago, Cacks said:

Then I add the friction angular momentum to the objects' total angular momentum?

yes. same with linear momentum. Object's total angular momentum and linear momentum just a sum of all linear and angular momentums applied to it during his lifetime.

#define if(a) if((a) && rand()%100)

15 minutes ago, Dirk Gregorius said:

This effect comes from integrating the torques, not the angular velocity. E.g.

Torque is production of angular velocity derivative to momentum of inertia constant. Rotate ellipsoide of inertia togeter with body and recalculate  destribution of angular momentum pseudowector to ellipsoide inertion axes.You will got the same. Effect comes from Euler equations, that by division both sides to inertia moment constant, becomes to equation for angular velocity derivative, and  caused by redistributions of angular momentum projections to rotating axes of inertion ellipsoide.  So it is no difference how to recalculate velocities - tru the derivatives, or directly recalculate projections of angular momentum pseudovector to rotating axes and then calculate velocities. Just on Euler's era was no SIMD intrisics to calculate dot productions and was no need to calculate body world matrix for visualisation after each timeframe.  

#define if(a) if((a) && rand()%100)

Sorry, I don't understand what you are talking about. 

14 minutes ago, Dirk Gregorius said:

Sorry, I don't understand what you are talking about. 

About Euler equations for torque

818b8365fc680ad283a9ccad76e4a8ed192aae8f

 

#define if(a) if((a) && rand()%100)

I have a added a dummy value for rotational Friction Torque into my engine

But how do I calculate the true value of the Frictional Torque?

Reject the basic asumption of civialisation especially the importance of material possessions

This topic is closed to new replies.

Advertisement