Rotations axis orientation indipendent using quaternions

Software: Away3D 4.x

Avatar
Luca, Sr. Member
Posted: 16 July 2013 08:51 AM   Total Posts: 230

The code smile

// GLOBAL VARS
   
public var CubeRotation:Vector3D = new Vector3D();
  public var 
PrevCubeRotation:Vector3D = new Vector3D();
  public var 
QRotationX:Quaternion = new Quaternion();
  public var 
QRotationY:Quaternion = new Quaternion();
  public var 
QRotationZ:Quaternion = new Quaternion();
  
  public var 
QAccum:Quaternion = new Quaternion();
  public var 
Mat:Matrix3D = new Matrix3D();
  
   
// CONVERSIONE GRADI > RADIANTI
  
protected const DEGREES_TO_RADIANS:Number Math.PI 180.0;
 
   
// SET MATH 11, 22, 33, 44 to 1 
   
Mat.identity();
 
  
/**
   * PITCH = Z
   * 
   */
  
public function SetPitchangle:Number )
  
{
   
var DRotationAngle:Number = ( CubeRotation.PrevCubeRotation.) * DEGREES_TO_RADIANS;
   
   
QRotationZ.copyFromQAccum );
   
QRotationZ.fromAxisAngleVector3D.Z_AXISDRotationAngle );
   
QAccum.multiplyQAccumQRotationZ );
   
QAccum.normalize();
   
PrevCubeRotation.CubeRotation.z;
  
}
  
  
/**
   * YAW = Y
   * 
   */
  
public function SetYawangle:Number )
  
{
   
var DRotationAngle:Number = ( CubeRotation.PrevCubeRotation.) * DEGREES_TO_RADIANS;

   
QRotationY.copyFromQAccum );
   
QRotationY.fromAxisAngleVector3D.Y_AXISDRotationAngle );
   
QAccum.multiplyQAccumQRotationY );
   
QAccum.normalize();
   
PrevCubeRotation.CubeRotation.y;
  
}
  
  
/**
   * ROLL = X
   * 
   */
  
public function SetRollangle:Number )
  
{
   
var DRotationAngle:Number = ( CubeRotation.PrevCubeRotation.) * DEGREES_TO_RADIANS;

   
QRotationX.copyFromQAccum );
   
QRotationX.fromAxisAngleVector3D.X_AXISDRotationAngle );
   
QAccum.multiplyQAccumQRotationX );
   
QAccum.normalize();
   
PrevCubeRotation.CubeRotation.x;
  
}
  
  
// APPLY THE TRANSFORM TO THE OBJECT...
  
OrientationCube.Mat OrientationCube.QAccum.toMatrix3D();
  
OrientationCube.Cube.transform OrientationCube.Mat
   
   

X

Away3D Forum

Member Login

Username

Password

Remember_me



X