* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download L14_RigidBody
Derivations of the Lorentz transformations wikipedia , lookup
Coriolis force wikipedia , lookup
Velocity-addition formula wikipedia , lookup
Specific impulse wikipedia , lookup
Laplace–Runge–Lenz vector wikipedia , lookup
Hooke's law wikipedia , lookup
Modified Newtonian dynamics wikipedia , lookup
Classical mechanics wikipedia , lookup
Newton's theorem of revolving orbits wikipedia , lookup
Fictitious force wikipedia , lookup
Jerk (physics) wikipedia , lookup
Theoretical and experimental justification for the Schrödinger equation wikipedia , lookup
Photon polarization wikipedia , lookup
Symmetry in quantum mechanics wikipedia , lookup
Seismometer wikipedia , lookup
Tensor operator wikipedia , lookup
Moment of inertia wikipedia , lookup
Accretion disk wikipedia , lookup
Angular momentum wikipedia , lookup
Angular momentum operator wikipedia , lookup
Mass versus weight wikipedia , lookup
Center of mass wikipedia , lookup
Equations of motion wikipedia , lookup
Centripetal force wikipedia , lookup
Newton's laws of motion wikipedia , lookup
Relativistic mechanics wikipedia , lookup
Classical central-force problem wikipedia , lookup
Rigid Body Dynamics simulate basic physics of an object subject to forces Keyframing can be tedious - especially to get ‘realism’ Simulate physics by - programming equations of motions - setting initial conditions Animator gives up control Animator gets ‘realistic’ motion automatically. Rick Parent - CIS682 Siimulation Update Cycle Object properties Position, orientation Linear and angular velocity Linear and angular momentum mass Update object properties Calculate forces Calculate accelerations Using mass, momenta Rick Parent - CIS682 Object under Forces Forces Gravity Wind Springs Collision avoidance Soft constraints Calculate acceleration due to forces Calculate update to object velocity & position Rick Parent - CIS682 Object under Linear Force Given: force, f(t), gives rise to acceleration, a(t), or x(ti ) Use a(t) to update current state of point mass: x(t), v(t) x(ti 1 ) x(ti ) x (ti )t x (ti 1 ) x (ti ) x(ti )t ( x (ti ) x (ti 1 )) x(ti 1 ) x(ti ) t 2 1 x(ti 1 ) x(ti ) x (ti )t x(ti )t 2 2 Rick Parent - CIS682 Equations of Motion Linear force Angular force: torque Linear momentum Angular momentum Conserved in a closed system Resistance to linear force: mass Resistance to angular force: inertia tensor. Rick Parent - CIS682 Rotational Movement Represent orientation with rotation matrix: R(t) Represent angular velocity with vector: w(t) - direction is axis of rotation - magnitude is speed of rotation Angular velocity insensitive to distance from center or rotation Rick Parent - CIS682 Rotational Movement w(t) - angular velocity w(t) a b r(t) r(t) - position of a relative to b b - point on axis of rotation r (t) q - angle r(t) makes with axis of rotation q b r(t ) w (t ) r (t ) r(t ) w (t ) r (t ) sin( q ) Rick Parent - CIS682 Rotational Movement R(t) - rotation matrix representing the orientation of a rigid body Columns are vectors to positions a unit length on principle axis R(t) R1(t) R2 (t) R3 (t) Change in rotation matrix can be computed by taking cross product of w(t) with each column R (t ) w (t ) R1 (t ) w (t ) R2 (t ) w (t ) R3 (t ) Rick Parent - CIS682 Rotational Movement R (t ) w (t ) R1 (t ) w (t ) R2 (t ) w (t ) R3 (t ) Define the following for notational convenience to define cross product as a matrix operation: w y Az w z Ay w A w z Ax w x Az w x Ay w y Ax 0 wz w y wz 0 wx w y Ax w x Ay w * A 0 Az Rick Parent - CIS682 Velocity of a Point q - original position of point in rigid body x(t) - position of rigid body v(t) - velocity of rigid body q(t) – time-dependent position of point in rigid body q(t ) R(t )q x(t ) q (t ) R (t )q x (t ) * R(t ) w (t ) R(t ) q (t ) w (t ) R(t )q v(t ) Rick Parent - CIS682 Center of Mass Object’s “position” is the position of its center of mass Integration of differential mass times position in object Approximate by summing over representational particles in object M mi m q (t) x(t) i i M Mass is the object’s resistance to a change in velocity Rick Parent - CIS682 Force and Torque F ma a F /m Force on center of mass results in linear acceleration F F (t ) f i (t ) i (t ) (q(t ) x(t )) f i (t ) (t ) i (t ) Force off-center of mass is torque and creates angular acceleration - what is angular mass? F Rick Parent - CIS682 But first…Linear Momentum p mv Mass times velocity P(t ) mi vi (t ) P(t ) Mv (t ) Sum over all particles of object Use total mass for linear momentum P (t ) Mv(t ) F (t ) Change in (linear) momentum is equal to force Rick Parent - CIS682 Angular Momentum - measure of rotating mass weighted by its distance from the axis of rotation Relative position of particle Relative velocity of particle mass L(t ) ((q(t ) x(t )) mi (q (t ) v(t )) ( R(t )q mi (w(t ) (q(t ) x(t )))) (mi ( R(t )q (w(t ) R(t )q))) Factor out mass Rick Parent - CIS682 Angular Momentum L(t) (mi (R(t)q (w(t) R(t)q))) Define Inertia Tensor, I(t), that captures distribution of mass L(t ) I (t )w (t ) L (t ) (t ) Similar to the linear case, the change in Angular Momentum is equal to torque Rick Parent - CIS682 Inertia Tensor - object’s resistance to a change in rotational velocity Ixx Iobject Ixy Ixz Ixx Ixz Iyz Izz Ixy Iyy Iyz (q)(q y 2 2 qz )dxdydz I(t) R(t)Iobject R(t) T Rick Parent - CIS682 Inertia Tensor Ixx (q)(q y Ixx mi (y i zi ) 2 2 2 2 qz )dxdydz Ixy m i x i y i Iyy mi (x i zi ) Ixz m i x i z i Izz mi (x i y i ) Iyz m i y i z i 2 2 2 2 Rick Parent - CIS682 Inertia Tensor for a Cuboid M (b2 + c2) 0 0 0 M (a2 + c2) 0 0 0 M (a2 + b2) 1 12 Rick Parent - CIS682 Finally, the Equations - State vector S (t) = x (t) Update with velocity R (t) Update with angular velocity P (t) Update with force L (t) Update with torque Given: S(t), M, Iobject I(t) R(t)Iobject R(t) * R(t ) w (t ) R(t ) P (t ) Mv(t ) F (t ) w(t) I(t) L(t) L (t ) (t ) v(t) P(t) / M T 1 Rick Parent - CIS682 Update State Vector x(t) v(t) * d d R(t) w (t) R(t) S(t) dt dt P(t) F(t) L(t) (t) Rick Parent - CIS682 Update Orientation - options R(t) += w (t) * R(t) and re-orthonormalize Extract axis-angle from w (t) and rotate columns of R(t) Use quaternions to rotate quaternion version of R(t) Rick Parent - CIS682 QuickTime™ and a Video decompressor are needed to see this picture. Rick Parent - CIS682 Now, what about collisions? Rick Parent - CIS682