Yo @Raggar … Thank a bunch… You too @JohnK…
I think i am going to try and use this in my Utilities
/** Multiply the quaternion by a vector */
public static MultiplyQuaternionByVector(quaternion:BABYLON.Quaternion, vector:BABYLON.Vector3): BABYLON.Vector3 {
const result:BABYLON.Vector3 = new BABYLON.Vector3(0,0,0);
BABYLON.Utilities.MultiplyQuaternionByVectorToRef(quaternion, vector, result);
return result;
}
/** Multiply the quaternion by a vector to result */
public static MultiplyQuaternionByVectorToRef(quaternion:BABYLON.Quaternion, vector:BABYLON.Vector3, result:BABYLON.Vector3) : void {
// Vector
const x:number = vector.x;
const y:number = vector.y;
const z:number = vector.z;
// Quaternion
const qx:number = quaternion.x;
const qy:number = quaternion.y;
const qz:number = quaternion.z;
const qw:number = quaternion.w;
// Quaternion * Vector
const ix:number = qw * x + qy * z - qz * y;
const iy:number = qw * y + qz * x - qx * z;
const iz:number = qw * z + qx * y - qy * x;
const iw:number = -qx * x - qy * y - qz * z;
// Final Quaternion * Vector = Result
result.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;
result.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;
result.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;
}
We shall see how that works… Ill let you know