Static variables

staticread onlyzero:DualQuaternion


>>> DualQuaternion.zero == new DualQuaternion({real:{ x: 0., y: 0., z: 0., w: 1. },dual:{x:0.,y:0.,z:0.,w:1.}})

Static methods

@:op(A + B)staticinlineadd(a:DualQuaternion, b:DualQuaternion):DualQuaternion


>>> ({ 
... var a = Quaternion.unit;
... var b = Quaternion.unit;
... var c = new DualQuaternion( { real: a, dual: b } );
... c + c == new DualQuaternion( { real:{ x: 2., y: 2., z: 2., w: 2. }, dual: { x: 2., y: 2., z: 2., w: 2. } } ); 
... }) == true

staticinlineapplyScale(this:DualQ, s:Float):DualQuaternion

applyScale

staticinlineclone(this:DualQ):DualQuaternion

@:op(~A)staticinlineconjugate(a:DualQuaternion):DualQuaternion

@:op(A / B)staticinlinedivide(a:DualQuaternion, v:Float):DualQuaternion

staticinlinedotProduct(a:DualQuaternion, b:DualQuaternion):Float

@:op(A == B)staticinlineequal(a:DualQuaternion, b:DualQuaternion):Bool


>>> ({ 
... var a = new Quaternion( { x: 1., y: 2., z: 3., w: 1. } );
... var b = new Quaternion( { x: 1., y: 2., z: 3., w: 1. } );
... var c = new Quaternion( { x: 1., y: 2., z: 3., w: 1. } );
... var d = new Quaternion( { x: 1., y: 2., z: 3., w: 1. } );
... var e = new DualQuaternion( { real: a, dual: b } );
... var f = new DualQuaternion( { real: c, dual: d } );
... e == f; }) == true

staticinlinegetTranslation(this:DualQ):Matrix1x4

@:op(A * B)staticinlinemultiplyQ(q1:DualQuaternion, q2:DualQuaternion):DualQuaternion

@:op(-A)staticinlinenegate(a:DualQuaternion):DualQuaternion


>>> ({ 
... var a = new Quaternion({ x: 1., y: 2., z: 3., w: 1. });
... var c = new DualQuaternion({ real: a, dual: a } );
... var b = -c;
... var e = new Quaternion({ x: -1., y: -2., z: -3., w: -1. });
... var f = new DualQuaternion({ real: e, dual: e });
... b == f; }) == true

staticinlinenormalize(this:DualQ):DualQuaternion

@:op(A != B)staticinlinenotEqual(a:DualQuaternion, b:DualQuaternion):Bool


>>> ({ 
... var a = new Quaternion( { x: 1., y: 2., z: 3., w: 1. } );
... var b = new Quaternion( { x: 1., y: 2., z: 3., w: 1. } );
... var c = new Quaternion( { x: 1., y: 2., z: 4., w: 1. } );
... var d = new Quaternion( { x: 1., y: 2., z: 4., w: 1. } );
... var e = new DualQuaternion( { real: a, dual: b } );
... var f = new DualQuaternion( { real: c, dual: d } );
... e != f; }) == true

staticinlinescalar(s:Float):DualQuaternion

allow scaling a DualQuaternion untested usage: var scaledDualQuaternion = DualQuaternion.scalar( 3 ) * dualQ; source: *http://roartindon.blogspot.com/2015/04/encoding-uniform-scale-in-quaternions.html

@:op(A * B)@:commutativestaticinlinescaleMultiply(a:DualQuaternion, v:Float):DualQuaternion

@:op(A - B)staticinlinesubtract(a:DualQuaternion, b:DualQuaternion):DualQuaternion


>>> ({ 
... var a = Quaternion.unit;
... var b = Quaternion.unit;
... var c = new DualQuaternion( { real: a, dual: b } );
... c - c == new DualQuaternion( { real: Quaternion.zero, dual: Quaternion.zero } );
... }) == true

@:tostaticinlinetoMatrix4x3(this:DualQ):Matrix4x3