True Axis Physics SDK 1.2.0.1 Beta Documentation
www.trueaxis.com

Glossary

Angular velocity:
Angular velocity gives the rate of change for an object orientation. In the True Axis Physics SDK, angular velocity is usually represented by an TA::Vec3. The direction of the vector gives the axis of rotation. The magnitude of the vector gives the rate of rotation in radians per second (rad/s).

Collision grid:
The True Axis Physics SDK can use either a collision grid or an octree to find potential collisions between a large number of moving objects.

The True Axis Physics SDK uses the term collision grid to describe a 2D grid used to separate space. Objects are placed into grid segments based on there location. When an object is moved, only near by grid segments need to be checked for other objects that could cause a collision. This way, the simulation can easily cope with thousands of dynamic objects. A collision grid has the advantage of being very fast for level layouts that can be represented well by a 2D map.

Sometimes, a 2D grid may not do a good job of dividing the world. The collision grid solution has problems with dynamic objects that are larger than a grid segment. The collision grid copes best with a world containing evenly distributed objects. Large sparse areas with small pockets of tightly packet objects are less ideal. A 2D grid may not work well with a highly 3D environment. The octree method provides an alternative solution that avoids these problems.

Fast solver:
True Axis has two solvers for calculating physics response the slow solver and the fast solver. See Solvers
Impulse:
An impulse is similar to a force, but where a force has an effect over time, an impulse is instantaneous. The units are in kg.m/s. The True Axis Physics SDK deals mostly with impulses rather than forces.

Inertia tensor:
As used in the True Axis Physics SDK, an inertia tensor is a 3 by 3 matrix representation of rotational inertia. The inertia tensor of an object affects how that object's angular velocity responds to forces and impulses. The value controls how the collision response of a cube is different to that of a long thin pole.

The relationship between the inertia tensor and angular velocity is equivalent to the relationship between mass and linear velocity. The inertia tensor however, rotates with the object, where as mass is not affected by rotation.

The following code fragment demonstrates how inertia is used when applying an impulse to an object. All values, including that of m33InverseInertia, are in world space.

   	v3LinearVelocity += 
   		v3Impulse * fInverseMass;
   	v3AngularVelocity += 
   		v3WorldImpulse.Cross(v3CenterOfMass - v3PositionOfImpulse) * 
   		m33InverseInertia;

Linear velocity:
Linear velocity gives the rate and direction of movement for an object's center of mass. In the True Axis Physics SDK, linear velocity is usually represented by an TA::Vec3. The magnitude of the vector gives the objects speed in meters per second (m/s).

Octree:
The True Axis Physics SDK can use either a collision grid or an octree to find potential collisions between a large number of moving objects. An octree is a spacial division structure. Each node in the tree is represented by a cube. A nodes children are created by dividing the cube into eight equally sized pieces.

The octree implementation has a number of advantages over the collision grid implementation, but the collision grid method may often be faster. See collision grid for more information.

Reference Counting:
Reference counting if often used on objects in the True Axis Physics SDK. Reference counting allows multiple references to be taken to a pointer and automatically cleans up when the last reference is released.

After a reference counted object is created it will have a reference count of one. AddRef() and Release() can be called to increment and decrement the reference count. If the reference count is zero after a call to Release() the object will be automatically deleted. Reference counted objects should only be created using new.

Slow solver:
True Axis has two solvers for calculating physics response the slow solver and the fast solver. See Solvers
Swept collision testing:
Most collision detection implementations are only capable of testing if two objects are currently intersecting. An object is moved to its new position than at which point it may be intersecting something or have totally moved through something. The faster an object moves, the more problematic this method becomes. One solution is to decrease the time number of time steps for fast moving objects but this can be slow.

The True Axis Physics SDK performs swept collision testing. By this we mean that all collision that occur during an objects movement can be found. As an approximation of reality, the True Axis Physics SDK finds all of the collisions that will occur in a time step and applies them all at ones. Multiple collisions passes are performed in a single time step to help cope with sudden velocity changes due to collisions. A single pass of this method of collision testing is slower than intersection testing but less passes are needed for accuracy so it can be potentially faster overall. Because swept collision testing is not need when object are moving slowly, it is turned off in these cases to improve execution speed.

The end result of the use of swept collision testing is that the True Axis Physics SDK copes well with very fast moving objects where other simulations have problems or even fail totally.



© Copyright 2004-2006 TRUE AXIS PTY LTD Australia. All rights reserved.