package Ġcom . wil lout west . kal ah ari . math Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġrotation Ġin Ġthree Ġdimensional ĠCart esian Ġspace Ġusing Ċ Ġ* Ġhyper - complex Ġnumbers . Ċ Ġ* Ċ Ġ* Ġ@ property Ġmagnitude Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ ĠThe Ġlength Ġof Ġthis Ġquaternion . Ċ Ġ* Ġ@ property Ġmagnitude Squared Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ ĠThe Ġlength Ġsquared Ġof Ġthis Ġquaternion . Ċ Ġ*/ Ċ class ĠQuaternion ( x : ĠFloat Ġ= Ġ 0 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy : ĠFloat Ġ= Ġ 0 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz : ĠFloat Ġ= Ġ 0 . 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw : ĠFloat Ġ= Ġ 1 . 0 f ) Ġ: ĠClone able , ĠTuple 4 ( x , Ġy , Ġz , Ġw ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRepresents Ġthe Ġidentity Ġquaternion . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠIdentity Ġ= ĠQuaternion ( 0 f , Ġ 0 f , Ġ 0 f , Ġ 1 f ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRepresents Ġthe Ġzero Ġquaternion . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠZero Ġ= ĠQuaternion ( 0 f , Ġ 0 f , Ġ 0 f , Ġ 0 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmagnitude : ĠFloat ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠMath Utils . sqrt ( this . magnitude Squared ) ĊĊĠĠĠ Ġval Ġmagnitude Squared : ĠFloat ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis . x Ġ* Ġthis . x Ġ+ Ġthis . y Ġ* Ġthis . y Ġ+ Ġthis . z Ġ* Ġthis . z Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . w Ġ* Ġthis . w ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġangle ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġamount Ġto Ġrotate Ġby Ġin Ġradians . ĊĠĠĠĠ Ġ* Ġ@ param Ġaxis ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġaxis Ġto Ġrotate Ġaround . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( angle : ĠFloat , Ġaxis : ĠVector 3 ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . set From Axis ( angle , Ġaxis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġroll ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġangle Ġof Ġrotation Ġin Ġradians Ġaround Ġthe Ġx - axis . ĊĠĠĠĠ Ġ* Ġ@ param Ġpitch ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġangle Ġof Ġrotation Ġin Ġradians Ġaround Ġthe Ġy - axis . ĊĠĠĠĠ Ġ* Ġ@ param Ġyaw ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġangle Ġof Ġrotation Ġin Ġradians Ġaround Ġthe Ġz - axis . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( roll : ĠFloat , Ġpitch : ĠFloat , Ġyaw : ĠFloat ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . set From Euler ( roll , Ġpitch , Ġyaw ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġarray ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġarray Ġto Ġcopy Ġfrom . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( array : ĠFloat Array ) ĊĠĠĠĠĠĠĠ Ġ: Ġthis ( array [ 0 ], Ġarray [ 1 ], Ġarray [ 2 ], Ġarray [ 3 ]) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtuple ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġtuple Ġto Ġcopy Ġfrom . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( tuple : ĠTuple 4 ?) Ġ: Ġthis ( tuple !!. x , Ġtuple . y , Ġtuple . z , Ġtuple . w ) ĊĊĠĠĠ Ġoverride Ġfun Ġclone (): ĠQuaternion Ġ= ĠQuaternion ( this ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġconj ug ate Ġof Ġthis Ġquaternion . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġconj ug ate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconj ug ate (): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ ĠQuaternion (- this . x , Ġ- this . y , Ġ- this . z , Ġthis . w ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġconj ug ate Ġof Ġthis Ġquaternion Ġand Ġalso Ġmod ifies Ġthis ĊĠĠĠĠ Ġ* Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconj ug ate Self (): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . x Ġ= Ġ- this . x ĊĠĠĠĠĠĠĠ Ġthis . y Ġ= Ġ- this . y ĊĠĠĠĠĠĠĠ Ġthis . z Ġ= Ġ- this . z ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġdiv ( scalar : ĠFloat ): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinv Ġ= Ġ 1 f Ġ/ Ġscalar ĊĊĠĠĠĠĠĠĠ Ġreturn ĠQuaternion ( this . x Ġ* Ġinv , Ġthis . y Ġ* Ġinv , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . z Ġ* Ġinv , Ġthis . w Ġ* Ġinv ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDiv ides Ġthe Ġcomponents Ġof Ġthis Ġquaternion Ġby Ġthe Ġspecified Ġscalar ĊĠĠĠĠ Ġ* Ġand Ġalso Ġmod ifies Ġthis Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġscalar ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġvalue Ġto Ġuse . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdiv Self ( scalar : ĠFloat ): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinv Ġ= Ġ 1 f Ġ/ Ġscalar ĊĊĠĠĠĠĠĠĠ Ġthis . x Ġ*= Ġinv ĊĠĠĠĠĠĠĠ Ġthis . y Ġ*= Ġinv ĊĠĠĠĠĠĠĠ Ġthis . z Ġ*= Ġinv ĊĠĠĠĠĠĠĠ Ġthis . w Ġ*= Ġinv ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġinverse Ġof Ġthis Ġquaternion . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġinverse . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinvert (): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinv Mag Sq ĠĠ Ġ= ĠMath Utils . safe Inverse ( this . magnitude Squared ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠQuaternion ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- this . x Ġ* Ġinv Mag Sq , Ġ- this . y Ġ* Ġinv Mag Sq , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- this . z Ġ* Ġinv Mag Sq , Ġthis . w Ġ* Ġinv Mag Sq ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġinverse Ġof Ġthis Ġquaternion Ġand Ġalso Ġmod ifies Ġthis ĊĠĠĠĠ Ġ* Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinvert Self (): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinv Mag Sq ĠĠ Ġ= ĠMath Utils . safe Inverse ( this . magnitude Squared ) ĊĊĠĠĠĠĠĠĠ Ġthis . x Ġ*= Ġ- inv Mag Sq ĊĠĠĠĠĠĠĠ Ġthis . y Ġ*= Ġ- inv Mag Sq ĊĠĠĠĠĠĠĠ Ġthis . z Ġ*= Ġ- inv Mag Sq ĊĠĠĠĠĠĠĠ Ġthis . w Ġ*= Ġinv Mag Sq ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSubtract s Ġthis Ġquaternion Ġfrom Ġthe Ġspecified Ġx - , Ġy - , Ġz - , Ġand Ġw - axis ĊĠĠĠĠ Ġ* Ġcomponents . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġx - axis Ġcomponent Ġto Ġsubtract . ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġy - axis Ġcomponent Ġto Ġsubtract . ĊĠĠĠĠ Ġ* Ġ@ param Ġz ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġz - axis Ġcomponent Ġto Ġsubtract . ĊĠĠĠĠ Ġ* Ġ@ param Ġw ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġw - axis Ġcomponent Ġto Ġsubtract . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġdifference Ġbetween Ġa Ġquaternion Ġand Ġfour Ġcomponents . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġminus ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġw : ĠFloat ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ ĠQuaternion ( this . x Ġ- Ġx , Ġthis . y Ġ- Ġy , Ġthis . z Ġ- Ġz , Ġthis . w Ġ- Ġw ) ĊĊĠĠĠ Ġoperator Ġfun Ġminus ( quat : ĠQuaternion ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ Ġthis . minus ( quat . x , Ġquat . y , Ġquat . z , Ġquat . w ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSubtract s Ġthis Ġquaternion Ġfrom Ġthe Ġspecified Ġx - , Ġy - , Ġz - , Ġand Ġw - axis ĊĠĠĠĠ Ġ* Ġcomponents Ġand Ġmod ifies Ġthis Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġx - axis Ġcomponent Ġto Ġsubtract . ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġy - axis Ġcomponent Ġto Ġsubtract . ĊĠĠĠĠ Ġ* Ġ@ param Ġz ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġz - axis Ġcomponent Ġto Ġsubtract . ĊĠĠĠĠ Ġ* Ġ@ param Ġw ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġw - axis Ġcomponent Ġto Ġsubtract . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġminus Self ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġw : ĠFloat ): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . x Ġ-= Ġx ĊĠĠĠĠĠĠĠ Ġthis . y Ġ-= Ġy ĊĠĠĠĠĠĠĠ Ġthis . z Ġ-= Ġz ĊĠĠĠĠĠĠĠ Ġthis . w Ġ-= Ġw ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSubtract s Ġthis Ġquaternion Ġfrom Ġthe Ġspecified Ġone Ġand Ġalso Ġmod ifies ĊĠĠĠĠ Ġ* Ġthis Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġquat ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġquaternion Ġto Ġsubtract Ġby . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġminus Self ( quat : ĠQuaternion ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ Ġthis . minus Self ( quat . x , Ġquat . y , Ġquat . z , Ġquat . w ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNormal izes Ġthis Ġquaternion . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġnormalized Ġquaternion . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnormalize (): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmag Ġ Ġ= Ġthis . magnitude ĊĠĠĠĠĠĠĠ Ġval Ġquat Ġ= ĠQuaternion ( this ) ĊĊĠĠĠĠĠĠĠ Ġif ( mag Ġ!= Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinv Ġ= Ġ 1 f Ġ/ Ġmag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquat . x Ġ*= Ġinv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquat . y Ġ*= Ġinv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquat . z Ġ*= Ġinv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquat . w Ġ*= Ġinv ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġquat ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNormal izes Ġthis Ġquaternion Ġand Ġalso Ġmod ifies Ġthis Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnormalize Self (): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmag Ġ= Ġthis . magnitude ĊĊĠĠĠĠĠĠĠ Ġif ( mag Ġ!= Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinv Ġ= Ġ 1 f Ġ/ Ġmag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . x Ġ*= Ġinv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . y Ġ*= Ġinv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . z Ġ*= Ġinv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . w Ġ*= Ġinv ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġthis Ġquaternion Ġto Ġthe Ġspecified Ġx - , Ġy - , Ġz - , Ġand Ġw - axis ĊĠĠĠĠ Ġ* Ġcomponents . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġx - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġy - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġz ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġz - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġw ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġw - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġsum Ġof Ġa Ġquaternion Ġand Ġfour Ġcomponents . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġplus ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġw : ĠFloat ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ ĠQuaternion ( this . x Ġ+ Ġx , Ġthis . y Ġ+ Ġy , Ġthis . z Ġ+ Ġz , Ġthis . w Ġ+ Ġw ) ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( quat : ĠQuaternion ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ Ġthis . plus ( quat . x , Ġquat . y , Ġquat . z , Ġquat . w ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġthis Ġquaternion Ġto Ġthe Ġspecified Ġx - , Ġy - , Ġz - , Ġand Ġw - axis ĊĠĠĠĠ Ġ* Ġcomponents Ġand Ġmod ifies Ġthis Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġx - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġy - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġz ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġz - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġw ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġw - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġplus Self ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġw : ĠFloat ): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . x Ġ+= Ġx ĊĠĠĠĠĠĠĠ Ġthis . y Ġ+= Ġy ĊĠĠĠĠĠĠĠ Ġthis . z Ġ+= Ġz ĊĠĠĠĠĠĠĠ Ġthis . w Ġ+= Ġw ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġthis Ġquaternion Ġto Ġthe Ġspecified Ġone Ġand Ġalso Ġmod ifies Ġthis ĊĠĠĠĠ Ġ* Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġquat ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġquaternion Ġto Ġadd Ġwith . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġplus Self ( quat : ĠQuaternion ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ Ġthis . plus Self ( quat . x , Ġquat . y , Ġquat . z , Ġquat . w ) ĊĊĠĠĠ Ġoverride Ġfun Ġset ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġw : ĠFloat ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ Ġsuper . set ( x , Ġy , Ġz , Ġw ) Ġas ĠQuaternion ĊĊĠĠĠ Ġoverride Ġfun Ġset ( array : ĠFloat Array ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ Ġsuper . set ( array ) Ġas ĠQuaternion ĊĊĠĠĠ Ġoverride Ġfun Ġset ( tuple : ĠTuple 4 ?): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ Ġsuper . set ( tuple ) Ġas ĠQuaternion ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComp o ses Ġthis Ġquaternion Ġas Ġa Ġrotation Ġof Ġthe Ġspecified Ġamount Ġin ĊĠĠĠĠ Ġ* Ġradians Ġaround Ġthe Ġspecified Ġaxis Ġcomponents . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġangle ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġamount Ġto Ġrotate Ġby Ġin Ġradians . ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġx - axis Ġrot ational Ġcomponent Ġto Ġuse . ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġy - axis Ġrot ational Ġcomponent . ĊĠĠĠĠ Ġ* Ġ@ param Ġz ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġz - axis Ġrot ational Ġcomponent Ġto Ġuse . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset From Axis ( angle : ĠFloat , Ġx : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat ): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhalf Angle Ġ= Ġangle Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġsin Ġ= ĠMath Utils . sin ( half Angle ) ĊĊĠĠĠĠĠĠĠ Ġthis . x Ġ= Ġx Ġ* Ġsin ĊĠĠĠĠĠĠĠ Ġthis . y Ġ= Ġy Ġ* Ġsin ĊĠĠĠĠĠĠĠ Ġthis . z Ġ= Ġz Ġ* Ġsin ĊĠĠĠĠĠĠĠ Ġthis . w Ġ= ĠMath Utils . cos ( half Angle ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComp o ses Ġthis Ġquaternion Ġas Ġa Ġrotation Ġof Ġthe Ġspecified Ġamount Ġin ĊĠĠĠĠ Ġ* Ġradians Ġaround Ġthe Ġspecified Ġaxis . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġangle ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġamount Ġto Ġrotate Ġby Ġin Ġradians . ĊĠĠĠĠ Ġ* Ġ@ param Ġaxis ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġaxis Ġto Ġrotate Ġaround . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset From Axis ( angle : ĠFloat , Ġaxis : ĠVector 3 ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ Ġthis . set From Axis ( angle , Ġaxis . x , Ġaxis . y , Ġaxis . z ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComp o ses Ġthis Ġquaternion Ġusing Ġthe Ġspecified Ġangles Ġof Ġrotation Ġaround ĊĠĠĠĠ Ġ* Ġthe Ġpitch , Ġroll , Ġand Ġyaw Ġaxes , Ġrespectively . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġfollows Ġthe Ġ" body Ġ 3 - 2 - 1 " Ġsequence Ġof Ġcomposition Ġby Ġfirst ĊĠĠĠĠ Ġ* Ġapplying Ġyaw , Ġthen Ġpitch , Ġand Ġfinally Ġroll . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġroll ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġangle Ġof Ġrotation Ġin Ġradians Ġaround Ġthe Ġx - axis . ĊĠĠĠĠ Ġ* Ġ@ param Ġpitch ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġangle Ġof Ġrotation Ġin Ġradians Ġaround Ġthe Ġy - axis . ĊĠĠĠĠ Ġ* Ġ@ param Ġyaw ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġangle Ġof Ġrotation Ġin Ġradians Ġaround Ġthe Ġz - axis . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset From Euler ( roll : ĠFloat , Ġpitch : ĠFloat , Ġyaw : ĠFloat ): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcos P Ġ= ĠMath Utils . cos ( pitch Ġ* Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠ Ġval Ġsin P Ġ= ĠMath Utils . sin ( pitch Ġ* Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠ Ġval Ġcos R Ġ= ĠMath Utils . cos ( roll Ġ* Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠ Ġval Ġsin R Ġ= ĠMath Utils . sin ( roll Ġ* Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠ Ġval Ġcos Y Ġ= ĠMath Utils . cos ( yaw Ġ* Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠ Ġval Ġsin Y Ġ= ĠMath Utils . sin ( yaw Ġ* Ġ 0 . 5 f ) ĊĊĠĠĠĠĠĠĠ Ġthis . x Ġ= Ġcos Y Ġ* Ġsin R Ġ* Ġcos P Ġ- Ġsin Y Ġ* Ġcos R Ġ* Ġsin P ĊĠĠĠĠĠĠĠ Ġthis . y Ġ= Ġcos Y Ġ* Ġcos R Ġ* Ġsin P Ġ+ Ġsin Y Ġ* Ġsin R Ġ* Ġcos P ĊĠĠĠĠĠĠĠ Ġthis . z Ġ= Ġsin Y Ġ* Ġcos R Ġ* Ġcos P Ġ- Ġcos Y Ġ* Ġsin R Ġ* Ġsin P ĊĠĠĠĠĠĠĠ Ġthis . w Ġ= Ġcos Y Ġ* Ġcos R Ġ* Ġcos P Ġ+ Ġsin Y Ġ* Ġsin R Ġ* Ġsin P ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( scalar : ĠFloat ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ ĠQuaternion ( this . x Ġ* Ġscalar , Ġthis . y Ġ* Ġscalar , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . z Ġ* Ġscalar , Ġthis . w Ġ* Ġscalar ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMultip lies Ġthis Ġquaternion Ġby Ġthe Ġspecified Ġx - , Ġy - , Ġz - , Ġand Ġw - axis ĊĠĠĠĠ Ġ* Ġcomponents . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġx - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġy - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġz ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġz - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġw ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġw - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġproduct Ġof Ġa Ġquaternion Ġand Ġfour Ġcomponents . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġw : ĠFloat ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ ĠQuaternion ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . w Ġ* Ġx Ġ+ Ġthis . x Ġ* Ġw Ġ+ Ġthis . y Ġ* Ġz Ġ- Ġthis . z Ġ* Ġy , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . w Ġ* Ġy Ġ- Ġthis . x Ġ* Ġz Ġ+ Ġthis . y Ġ* Ġw Ġ+ Ġthis . z Ġ* Ġx , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . w Ġ* Ġz Ġ+ Ġthis . x Ġ* Ġy Ġ- Ġthis . y Ġ* Ġx Ġ+ Ġthis . z Ġ* Ġw , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . w Ġ* Ġw Ġ- Ġthis . x Ġ* Ġx Ġ- Ġthis . y Ġ* Ġy Ġ- Ġthis . z Ġ* Ġz ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( quat : ĠQuaternion ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ Ġthis . times ( quat . x , Ġquat . y , Ġquat . z , Ġquat . w ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMultip lies Ġthe Ġcomponents Ġof Ġthis Ġquaternion Ġby Ġthe Ġspecified Ġscalar ĊĠĠĠĠ Ġ* Ġand Ġalso Ġmod ifies Ġthis Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġscalar ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġvalue Ġto Ġuse . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtimes Self ( scalar : ĠFloat ): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . x Ġ*= Ġscalar ĊĠĠĠĠĠĠĠ Ġthis . y Ġ*= Ġscalar ĊĠĠĠĠĠĠĠ Ġthis . z Ġ*= Ġscalar ĊĠĠĠĠĠĠĠ Ġthis . w Ġ*= Ġscalar ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMultip lies Ġthis Ġquaternion Ġby Ġthe Ġspecified Ġx - , Ġy - , Ġz - , Ġand Ġw - axis ĊĠĠĠĠ Ġ* Ġcomponents Ġand Ġmod ifies Ġthis Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġx - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġy - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġz ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġz - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ param Ġw ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġw - axis Ġcomponent Ġto Ġadd . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtimes Self ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġw : ĠFloat ): ĠQuaternion Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold W Ġ= Ġthis . w ĊĠĠĠĠĠĠĠ Ġval Ġold X Ġ= Ġthis . x ĊĠĠĠĠĠĠĠ Ġval Ġold Y Ġ= Ġthis . y ĊĠĠĠĠĠĠĠ Ġval Ġold Z Ġ= Ġthis . z ĊĊĠĠĠĠĠĠĠ Ġthis . x Ġ= Ġold W Ġ* Ġx Ġ+ Ġold X Ġ* Ġw Ġ+ Ġold Y Ġ* Ġz Ġ- Ġold Z Ġ* Ġy ĊĠĠĠĠĠĠĠ Ġthis . y Ġ= Ġold W Ġ* Ġy Ġ- Ġold X Ġ* Ġz Ġ+ Ġold Y Ġ* Ġw Ġ+ Ġold Z Ġ* Ġx ĊĠĠĠĠĠĠĠ Ġthis . z Ġ= Ġold W Ġ* Ġz Ġ+ Ġold X Ġ* Ġy Ġ- Ġold Y Ġ* Ġx Ġ+ Ġold Z Ġ* Ġw ĊĠĠĠĠĠĠĠ Ġthis . w Ġ= Ġold W Ġ* Ġw Ġ- Ġold X Ġ* Ġx Ġ- Ġold Y Ġ* Ġy Ġ- Ġold Z Ġ* Ġz ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMultip lies Ġthis Ġquaternion Ġby Ġthe Ġspecified Ġone Ġand Ġalso Ġmod ifies Ġthis ĊĠĠĠĠ Ġ* Ġquaternion Ġas Ġa Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠQuaternion Ġmultiplication Ġis Ġalso Ġcalled Ġthe ĠH amil ton Ġproduct . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġquat ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġquaternion Ġto Ġmultiply Ġwith . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġthis Ġquaternion Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtimes Self ( quat : ĠQuaternion ): ĠQuaternion Ġ= ĊĠĠĠĠĠĠĠ Ġthis . times Self ( quat . x , Ġquat . y , Ġquat . z , Ġquat . w ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġthis Ġquaternion Ġto Ġa Ġrotation Ġmatrix . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġrotation Ġmatrix . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Matrix (): ĠMatrix 4 Ġ= Ġto Matrix ( Matrix 4 ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġthis Ġquaternion Ġto Ġa Ġrotation Ġmatrix Ġand Ġstores Ġthe Ġresult Ġin ĊĠĠĠĠ Ġ* Ġthe Ġspecified Ġmatrix . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstore ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ ĠThe Ġmatrix Ġto Ġstore Ġthe Ġresult Ġin . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreference Ġto Ġstore Ġfor Ġeasy Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Matrix ( store : ĠMatrix 4 ): ĠMatrix 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmag Ġ= Ġthis . magnitude ĊĠĠĠĠĠĠĠ Ġval Ġscalar Ġ= Ġwhen ( mag Ġ== Ġ 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ 2 f Ġ/ Ġmag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ Ġ-> Ġ 2 f ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġxs Ġ= Ġthis . x Ġ* Ġscalar ĊĠĠĠĠĠĠĠ Ġval Ġys Ġ= Ġthis . y Ġ* Ġscalar ĊĠĠĠĠĠĠĠ Ġval Ġz s Ġ= Ġthis . z Ġ* Ġscalar ĊĠĠĠĠĠĠĠ Ġval Ġws Ġ= Ġthis . w Ġ* Ġscalar ĊĊĠĠĠĠĠĠĠ Ġval Ġxx Ġ= Ġthis . x Ġ* Ġxs ĊĠĠĠĠĠĠĠ Ġval Ġxy Ġ= Ġthis . x Ġ* Ġys ĊĠĠĠĠĠĠĠ Ġval Ġx z Ġ= Ġthis . x Ġ* Ġz s ĊĠĠĠĠĠĠĠ Ġval Ġx w Ġ= Ġthis . x Ġ* Ġws ĊĠĠĠĠĠĠĠ Ġval Ġyy Ġ= Ġthis . y Ġ* Ġys ĊĠĠĠĠĠĠĠ Ġval Ġy z Ġ= Ġthis . y Ġ* Ġz s ĊĠĠĠĠĠĠĠ Ġval Ġy w Ġ= Ġthis . y Ġ* Ġws ĊĠĠĠĠĠĠĠ Ġval Ġzz Ġ= Ġthis . z Ġ* Ġz s ĊĠĠĠĠĠĠĠ Ġval Ġz w Ġ= Ġthis . z Ġ* Ġws ĊĊĠĠĠĠĠĠĠ Ġstore . t 0 0 Ġ= Ġ 1 . 0 f Ġ- Ġ( yy Ġ+ Ġzz ) ĊĠĠĠĠĠĠĠ Ġstore . t 0 1 Ġ= Ġ( xy Ġ- Ġz w ) ĊĠĠĠĠĠĠĠ Ġstore . t 0 2 Ġ= Ġ( xz Ġ+ Ġy w ) ĊĠĠĠĠĠĠĠ Ġstore . t 1 0 Ġ= Ġ( xy Ġ+ Ġz w ) ĊĠĠĠĠĠĠĠ Ġstore . t 1 1 Ġ= Ġ 1 . 0 f Ġ- Ġ( xx Ġ+ Ġzz ) ĊĠĠĠĠĠĠĠ Ġstore . t 1 2 Ġ= Ġ( yz Ġ- Ġx w ) ĊĠĠĠĠĠĠĠ Ġstore . t 2 0 Ġ= Ġ( xz Ġ- Ġy w ) ĊĠĠĠĠĠĠĠ Ġstore . t 2 1 Ġ= Ġ( yz Ġ+ Ġx w ) ĊĠĠĠĠĠĠĠ Ġstore . t 2 2 Ġ= Ġ 1 . 0 f Ġ- Ġ( xx Ġ+ Ġyy ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstore ĊĠĠĠ Ġ} Ċ }