č Ċ package Ġsilent orb . my th ic . spatial čĊč Ċ import Ġorg . j om l . Math č Ċ import Ġorg . j om l . Matrix 3 x 2 fc č Ċ import Ġorg . j om l . Vector 2 fc č Ċ import Ġjava . io . IOException č Ċ import Ġjava . io . Object Input č Ċ import Ġjava . io . Object Output č Ċ import Ġjava . text . NumberFormat čĊč Ċ /** čĊ Ġ* ĠRepresents Ġa Ġ 2 D Ġvector Ġwith Ġsingle - precision . čĊ Ġ* čĊ Ġ* Ġ@ author ĠR Green le es čĊ Ġ* Ġ@ author ĠK ai ĠBur jack čĊ Ġ*/ č Ċ class ĠVector 2 f Ġ{ čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠThe Ġx Ġcomponent Ġof Ġthe Ġvector . čĊĠĠ Ġ*/ čĊĠ Ġvar Ġx : ĠFloat Ġ= Ġ 0 . toFloat () čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠThe Ġy Ġcomponent Ġof Ġthe Ġvector . čĊĠĠ Ġ*/ čĊĠ Ġvar Ġy : ĠFloat Ġ= Ġ 0 . toFloat () čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠCreate Ġa Ġnew Ġ[ Vector 2 f ] Ġand Ġinitialize Ġits Ġcomponents Ġto Ġzero . čĊĠĠ Ġ*/ čĊĠ Ġconstructor () Ġ{} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠCreate Ġa Ġnew Ġ[ Vector 2 f ] Ġand Ġinitialize Ġboth Ġof Ġits Ġcomponents Ġwith Ġthe Ġgiven Ġvalue . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġd čĊĠĠ Ġ* Ġthe Ġvalue Ġof Ġboth Ġcomponents čĊĠĠ Ġ*/ čĊĠ Ġconstructor ( d : ĠFloat ) Ġ: Ġthis ( d , Ġd ) Ġ{} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠCreate Ġa Ġnew Ġ[ Vector 2 f ] Ġand Ġinitialize Ġits Ġcomponents Ġto Ġthe Ġgiven Ġvalues . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġx čĊĠĠ Ġ* Ġthe Ġx Ġcomponent čĊĠĠ Ġ* Ġ@ param Ġy čĊĠĠ Ġ* Ġthe Ġy Ġcomponent čĊĠĠ Ġ*/ čĊĠ Ġconstructor ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ čĊĠĠĠ Ġthis . x Ġ= Ġx čĊĠĠĠ Ġthis . y Ġ= Ġy čĊĠ Ġ} čĊčĊĠ Ġprivate Ġfun Ġthis Or New (): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġthis čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠSet Ġthe Ġx Ġand Ġy Ġcomponents Ġto Ġthe Ġsupplied Ġvalue . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġd čĊĠĠ Ġ* Ġthe Ġvalue Ġof Ġboth Ġcomponents čĊĠĠ Ġ* Ġ@ return Ġthis čĊĠĠ Ġ*/ čĊĠ Ġfun Ġset ( d : ĠFloat ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġset ( d , Ġd ) čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠSet Ġthe Ġx Ġand Ġy Ġcomponents Ġto Ġthe Ġsupplied Ġvalues . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġx čĊĠĠ Ġ* Ġthe Ġx Ġcomponent čĊĠĠ Ġ* Ġ@ param Ġy čĊĠĠ Ġ* Ġthe Ġy Ġcomponent čĊĠĠ Ġ* Ġ@ return Ġthis čĊĠĠ Ġ*/ čĊĠ Ġoperator Ġfun Ġset ( x : ĠFloat , Ġy : ĠFloat ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġthis . x Ġ= Ġx čĊĠĠĠ Ġthis . y Ġ= Ġy čĊĠĠĠ Ġreturn Ġthis čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠSet Ġthis Ġ[ Vector 2 f ] Ġto Ġthe Ġvalues Ġof Ġv . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġv čĊĠĠ Ġ* Ġthe Ġvector Ġto Ġcopy Ġfrom čĊĠĠ Ġ* Ġ@ return Ġthis čĊĠĠ Ġ*/ čĊĠ Ġfun Ġset ( v : ĠVector 2 fc ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġset ( v . x , Ġv . y ) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # get ( int ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġ@ Throws ( IllegalArgumentException :: class ) čĊĠ Ġfun Ġget ( component : ĠInt ): ĠFloat Ġ{ čĊĠĠĠ Ġwhen Ġ( component ) Ġ{ čĊĠĠĠĠĠĠ 0 Ġ-> Ġreturn Ġx čĊĠĠĠĠĠĠ 1 Ġ-> Ġreturn Ġy čĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException () čĊĠĠĠ Ġ} čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠSet Ġthe Ġvalue Ġof Ġthe Ġspecified Ġcomponent Ġof Ġthis Ġvector . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġcomponent čĊĠĠ Ġ* Ġthe Ġcomponent Ġwhose Ġvalue Ġto Ġset , Ġwithin Ġ< tt >[ 0 .. 1 ]</ tt > čĊĠĠ Ġ* Ġ@ param Ġvalue čĊĠĠ Ġ* Ġthe Ġvalue Ġto Ġset čĊĠĠ Ġ* Ġ@ return Ġthis čĊĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġ` component ` Ġis Ġnot Ġwithin Ġ< tt >[ 0 .. 1 ]</ tt > čĊĠĠ Ġ*/ čĊĠ Ġ@ Throws ( IllegalArgumentException :: class ) čĊĠ Ġfun Ġset Component ( component : ĠInt , Ġvalue : ĠFloat ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġwhen Ġ( component ) Ġ{ čĊĠĠĠĠĠĠ 0 Ġ-> Ġx Ġ= Ġvalue čĊĠĠĠĠĠĠ 1 Ġ-> Ġy Ġ= Ġvalue čĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException () čĊĠĠĠ Ġ} čĊĠĠĠ Ġreturn Ġthis čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠSet Ġthis Ġvector Ġto Ġbe Ġone Ġof Ġits Ġper pend icular Ġvectors . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ return Ġthis čĊĠĠ Ġ*/ čĊĠ Ġfun Ġper pend icular (): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġset ( y , Ġx Ġ* Ġ- 1 ) čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠSubtract Ġ` v ` Ġfrom Ġthis Ġvector . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġv čĊĠĠ Ġ* Ġthe Ġvector Ġto Ġsubtract čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġsub ( v : ĠVector 2 fc ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġsub ( v , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # sub ( Vector 2 fc , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġsub ( v : ĠVector 2 fc , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġx Ġ- Ġv . x čĊĠĠĠ Ġdest . y Ġ= Ġy Ġ- Ġv . y čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠSubtract Ġ< tt >( x , Ġy )</ tt > Ġfrom Ġthis Ġvector . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġx čĊĠĠ Ġ* Ġthe Ġx Ġcomponent Ġto Ġsubtract čĊĠĠ Ġ* Ġ@ param Ġy čĊĠĠ Ġ* Ġthe Ġy Ġcomponent Ġto Ġsubtract čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġsub ( x : ĠFloat , Ġy : ĠFloat ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġsub ( x , Ġy , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # sub ( float , Ġfloat , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġsub ( x : ĠFloat , Ġy : ĠFloat , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġthis . x Ġ- Ġx čĊĠĠĠ Ġdest . y Ġ= Ġthis . y Ġ- Ġy čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # dot ( Vector 2 fc ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġdot ( v : ĠVector 2 fc ): ĠFloat Ġ{ čĊĠĠĠ Ġreturn Ġx Ġ* Ġv . x Ġ+ Ġy Ġ* Ġv . y čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # angle ( Vector 2 fc ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġangle ( v : ĠVector 2 fc ): ĠFloat Ġ{ čĊĠĠĠ Ġval Ġdot Ġ= Ġx Ġ* Ġv . x Ġ+ Ġy Ġ* Ġv . y čĊĠĠĠ Ġval Ġdet Ġ= Ġx Ġ* Ġv . y Ġ- Ġy Ġ* Ġv . x čĊĠĠĠ Ġreturn ĠMath . atan 2 ( det . toDouble (), Ġdot . toDouble ()). toFloat () čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # length () čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġlength (): ĠFloat Ġ{ čĊĠĠĠ Ġreturn ĠMath . sqrt (( x Ġ* Ġx Ġ+ Ġy Ġ* Ġy ). toDouble ()). toFloat () čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # length Squared () čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġlength Squared (): ĠFloat Ġ{ čĊĠĠĠ Ġreturn Ġx Ġ* Ġx Ġ+ Ġy Ġ* Ġy čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # distance ( Vector 2 fc ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġdistance ( v : ĠVector 2 fc ): ĠFloat Ġ{ čĊĠĠĠ Ġreturn Ġdistance ( v . x , Ġv . y ) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # distance Squared ( Vector 2 fc ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġ// ĠĠĠ Ġpublic Ġfloat Ġdistance Squared ( Vector 2 fc Ġv ) Ġ{ čĊĠ Ġ// ĠĠĠĠĠĠĠ Ġreturn Ġdistance Squared ( v . x , Ġv . y ); čĊĠ Ġ// ĠĠĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # distance ( float , Ġfloat ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġdistance ( x : ĠFloat , Ġy : ĠFloat ): ĠFloat Ġ{ čĊĠĠĠ Ġval Ġdx Ġ= Ġthis . x Ġ- Ġx čĊĠĠĠ Ġval Ġdy Ġ= Ġthis . y Ġ- Ġy čĊĠĠĠ Ġreturn ĠMath . sqrt (( dx Ġ* Ġdx Ġ+ Ġdy Ġ* Ġdy ). toDouble ()). toFloat () čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # distance Squared ( float , Ġfloat ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġdistance Squared ( x : ĠFloat , Ġy : ĠFloat ): ĠFloat Ġ{ čĊĠĠĠ Ġval Ġdx Ġ= Ġthis . x Ġ- Ġx čĊĠĠĠ Ġval Ġdy Ġ= Ġthis . y Ġ- Ġy čĊĠĠĠ Ġreturn Ġdx Ġ* Ġdx Ġ+ Ġdy Ġ* Ġdy čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠNormalize Ġthis Ġvector . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġnormalize (): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġnormalize ( this Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # normalize ( Vector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġnormalize ( dest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġval Ġinv Length Ġ= Ġ( 1 . 0 Ġ/ ĠMath . sqrt (( x Ġ* Ġx Ġ+ Ġy Ġ* Ġy ). toDouble ())). toFloat () čĊĠĠĠ Ġdest . x Ġ= Ġx Ġ* Ġinv Length čĊĠĠĠ Ġdest . y Ġ= Ġy Ġ* Ġinv Length čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠScale Ġthis Ġvector Ġto Ġhave Ġthe Ġgiven Ġlength . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġlength čĊĠĠ Ġ* Ġthe Ġdesired Ġlength čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġnormalize ( length : ĠFloat ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġnormalize ( length , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # normalize ( float , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġnormalize ( length : ĠFloat , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġval Ġinv Length Ġ= Ġ( 1 . 0 Ġ/ ĠMath . sqrt (( x Ġ* Ġx Ġ+ Ġy Ġ* Ġy ). toDouble ())). toFloat () Ġ* Ġlength čĊĠĠĠ Ġdest . x Ġ= Ġx Ġ* Ġinv Length čĊĠĠĠ Ġdest . y Ġ= Ġy Ġ* Ġinv Length čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠAdd Ġ` v ` Ġto Ġthis Ġvector . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġv čĊĠĠ Ġ* Ġthe Ġvector Ġto Ġadd čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġadd ( v : ĠVector 2 fc ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġadd ( v , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # add ( Vector 2 fc , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġadd ( v : ĠVector 2 fc , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġx Ġ+ Ġv . x čĊĠĠĠ Ġdest . y Ġ= Ġy Ġ+ Ġv . y čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠIncrement Ġthe Ġcomponents Ġof Ġthis Ġvector Ġby Ġthe Ġgiven Ġvalues . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġx čĊĠĠ Ġ* Ġthe Ġx Ġcomponent Ġto Ġadd čĊĠĠ Ġ* Ġ@ param Ġy čĊĠĠ Ġ* Ġthe Ġy Ġcomponent Ġto Ġadd čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġadd ( x : ĠFloat , Ġy : ĠFloat ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġadd ( x , Ġy , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # add ( float , Ġfloat , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġadd ( x : ĠFloat , Ġy : ĠFloat , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġthis . x Ġ+ Ġx čĊĠĠĠ Ġdest . y Ġ= Ġthis . y Ġ+ Ġy čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠSet Ġall Ġcomponents Ġto Ġzero . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġzero (): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġthis Or New (). set ( 0 f , Ġ 0 f ) čĊĠ Ġ} čĊčĊĠ Ġ@ Throws ( IOException :: class ) čĊĠ Ġfun Ġwrite External ( out : ĠObject Output ) Ġ{ čĊĠĠĠ Ġout . write Float ( x ) čĊĠĠĠ Ġout . write Float ( y ) čĊĠ Ġ} čĊčĊĠ Ġ@ Throws ( IOException :: class , ĠClass NotFoundException :: class ) čĊĠ Ġfun Ġread External (` in `: ĠObject Input ) Ġ{ čĊĠĠĠ Ġx Ġ= Ġ` in `. read Float () čĊĠĠĠ Ġy Ġ= Ġ` in `. read Float () čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠNeg ate Ġthis Ġvector . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġneg ate (): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġneg ate ( this Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # neg ate ( Vector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġneg ate ( dest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġ- x čĊĠĠĠ Ġdest . y Ġ= Ġ- y čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠMultiply Ġthe Ġcomponents Ġof Ġthis Ġvector Ġby Ġthe Ġgiven Ġscalar . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġscalar čĊĠĠ Ġ* Ġthe Ġvalue Ġto Ġmultiply Ġthis Ġvector 's Ġcomponents Ġby čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġmul ( scalar : ĠFloat ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġmul ( scalar , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # mul ( float , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġmul ( scalar : ĠFloat , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġx Ġ* Ġscalar čĊĠĠĠ Ġdest . y Ġ= Ġy Ġ* Ġscalar čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠMultiply Ġthe Ġcomponents Ġof Ġthis ĠVector 2 f Ġby Ġthe Ġgiven Ġscalar Ġvalues Ġand Ġstore Ġthe Ġresult Ġin Ġ` this `. čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġx čĊĠĠ Ġ* Ġthe Ġx Ġcomponent Ġto Ġmultiply Ġthis Ġvector Ġby čĊĠĠ Ġ* Ġ@ param Ġy čĊĠĠ Ġ* Ġthe Ġy Ġcomponent Ġto Ġmultiply Ġthis Ġvector Ġby čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġmul ( x : ĠFloat , Ġy : ĠFloat ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġmul ( x , Ġy , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # mul ( float , Ġfloat , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġmul ( x : ĠFloat , Ġy : ĠFloat , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġthis . x Ġ* Ġx čĊĠĠĠ Ġdest . y Ġ= Ġthis . y Ġ* Ġy čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠMultiply Ġthis ĠVector 2 f Ġcomponent - wise Ġby Ġanother ĠVector 2 f . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġv čĊĠĠ Ġ* Ġthe Ġvector Ġto Ġmultiply Ġby čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġmul ( v : ĠVector 2 fc ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġmul ( v , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # mul ( Vector 2 fc , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġmul ( v : ĠVector 2 fc , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġx Ġ* Ġv . x čĊĠĠĠ Ġdest . y Ġ= Ġy Ġ* Ġv . y čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠMultiply Ġthe Ġgiven Ġ 3 x 2 Ġmatrix Ġ` mat ` Ġwith Ġ` this `. čĊĠĠ Ġ* čĊĠĠ Ġ* čĊĠĠ Ġ* ĠThis Ġmethod Ġassumes Ġthe Ġ< tt > z </ tt > Ġcomponent Ġof Ġ` this ` Ġto Ġbe Ġ< tt > 1 . 0 </ tt >. čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġmat čĊĠĠ Ġ* Ġthe Ġmatrix Ġto Ġmultiply Ġthis Ġvector Ġby čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġmul Position ( mat : ĠMatrix 3 x 2 fc ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġmul Position ( mat , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # mul Position ( org . j om l . Matrix 3 x 2 fc , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġmul Position ( mat : ĠMatrix 3 x 2 fc , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest [ mat . m 0 0 () Ġ* Ġx Ġ+ Ġmat . m 1 0 () Ġ* Ġy Ġ+ Ġmat . m 2 0 ()] Ġ= Ġmat . m 0 1 () Ġ* Ġx Ġ+ Ġmat . m 1 1 () Ġ* Ġy Ġ+ Ġmat . m 2 1 () čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠMultiply Ġthe Ġgiven Ġ 3 x 2 Ġmatrix Ġ` mat ` Ġwith Ġ` this `. čĊĠĠ Ġ* čĊĠĠ Ġ* čĊĠĠ Ġ* ĠThis Ġmethod Ġassumes Ġthe Ġ< tt > z </ tt > Ġcomponent Ġof Ġ` this ` Ġto Ġbe Ġ< tt > 0 . 0 </ tt >. čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġmat čĊĠĠ Ġ* Ġthe Ġmatrix Ġto Ġmultiply Ġthis Ġvector Ġby čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġmul Direction ( mat : ĠMatrix 3 x 2 fc ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġmul Direction ( mat , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # mul Direction ( org . j om l . Matrix 3 x 2 fc , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġmul Direction ( mat : ĠMatrix 3 x 2 fc , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest [ mat . m 0 0 () Ġ* Ġx Ġ+ Ġmat . m 1 0 () Ġ* Ġy ] Ġ= Ġmat . m 0 1 () Ġ* Ġx Ġ+ Ġmat . m 1 1 () Ġ* Ġy čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠLinear ly Ġinterpolate Ġ` this ` Ġand Ġ` other ` Ġusing Ġthe Ġgiven Ġinterpolation Ġfactor Ġ` t ` čĊĠĠ Ġ* Ġand Ġstore Ġthe Ġresult Ġin Ġ` this `. čĊĠĠ Ġ* čĊĠĠ Ġ* čĊĠĠ Ġ* ĠIf Ġ` t ` Ġis Ġ< tt > 0 . 0 </ tt > Ġthen Ġthe Ġresult Ġis Ġ` this `. ĠIf Ġthe Ġinterpolation Ġfactor Ġis Ġ` 1 . 0 ` čĊĠĠ Ġ* Ġthen Ġthe Ġresult Ġis Ġ` other `. čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġother čĊĠĠ Ġ* Ġthe Ġother Ġvector čĊĠĠ Ġ* Ġ@ param Ġt čĊĠĠ Ġ* Ġthe Ġinterpolation Ġfactor Ġbetween Ġ 0 . 0 Ġand Ġ 1 . 0 čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġl erp ( other : ĠVector 2 fc , Ġt : ĠFloat ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġl erp ( other , Ġt , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # lerp ( Vector 2 fc , Ġfloat , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġl erp ( other : ĠVector 2 fc , Ġt : ĠFloat , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġx Ġ+ Ġ( other . x Ġ- Ġx ) Ġ* Ġt čĊĠĠĠ Ġdest . y Ġ= Ġy Ġ+ Ġ( other . y Ġ- Ġy ) Ġ* Ġt čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠReturn Ġa Ġstring Ġrepresentation Ġof Ġthis Ġvector Ġby Ġformatting Ġthe Ġvector Ġcomponents Ġwith Ġthe Ġgiven Ġ[ NumberFormat ]. čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġformatter čĊĠĠ Ġ* Ġthe Ġ[ NumberFormat ] Ġused Ġto Ġformat Ġthe Ġvector Ġcomponents Ġwith čĊĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġrepresentation čĊĠĠ Ġ*/ čĊĠ Ġfun ĠtoString ( formatter : ĠNumber Format ): ĠString Ġ{ čĊĠĠĠ Ġreturn Ġ"(" Ġ+ Ġformatter . format ( x . toDouble ()) Ġ+ Ġ" Ġ" Ġ+ Ġformatter . format ( y . toDouble ()) Ġ+ Ġ")" čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠAdd Ġthe Ġcomponent - wise Ġmultiplication Ġof Ġ` a Ġ* Ġb ` Ġto Ġthis Ġvector . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġa čĊĠĠ Ġ* Ġthe Ġfirst Ġmultip lic and čĊĠĠ Ġ* Ġ@ param Ġb čĊĠĠ Ġ* Ġthe Ġsecond Ġmultip lic and čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġf ma ( a : ĠVector 2 fc , Ġb : ĠVector 2 fc ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġf ma ( a , Ġb , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠAdd Ġthe Ġcomponent - wise Ġmultiplication Ġof Ġ` a Ġ* Ġb ` Ġto Ġthis Ġvector . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġa čĊĠĠ Ġ* Ġthe Ġfirst Ġmultip lic and čĊĠĠ Ġ* Ġ@ param Ġb čĊĠĠ Ġ* Ġthe Ġsecond Ġmultip lic and čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġf ma ( a : ĠFloat , Ġb : ĠVector 2 fc ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġf ma ( a , Ġb , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # f ma ( Vector 2 fc , ĠVector 2 fc , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġf ma ( a : ĠVector 2 fc , Ġb : ĠVector 2 fc , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġx Ġ+ Ġa . x Ġ* Ġb . x čĊĠĠĠ Ġdest . y Ġ= Ġy Ġ+ Ġa . y Ġ* Ġb . y čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/* Ġ( non - Javadoc ) čĊĠĠĠĠ Ġ* Ġ@ see ĠVector 2 fc # f ma ( float , ĠVector 2 fc , ĠVector 2 f ) čĊĠĠĠĠ Ġ*/ čĊĠ Ġfun Ġf ma ( a : ĠFloat , Ġb : ĠVector 2 fc , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġx Ġ+ Ġa Ġ* Ġb . x čĊĠĠĠ Ġdest . y Ġ= Ġy Ġ+ Ġa Ġ* Ġb . y čĊĠĠĠ Ġreturn Ġdest čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠSet Ġthe Ġcomponents Ġof Ġthis Ġvector Ġto Ġbe Ġthe Ġcomponent - wise Ġminimum Ġof Ġthis Ġand Ġthe Ġother Ġvector . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġv čĊĠĠ Ġ* Ġthe Ġother Ġvector čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġmin ( v : ĠVector 2 fc ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġmin ( v , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġfun Ġmin ( v : ĠVector 2 fc , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġif Ġ( x Ġ< Ġv . x ) Ġx Ġelse Ġv . x čĊĠĠĠ Ġdest . y Ġ= Ġif Ġ( y Ġ< Ġv . y ) Ġy Ġelse Ġv . y čĊĠĠĠ Ġreturn Ġthis čĊĠ Ġ} čĊčĊĠ Ġ/** čĊĠĠ Ġ* ĠSet Ġthe Ġcomponents Ġof Ġthis Ġvector Ġto Ġbe Ġthe Ġcomponent - wise Ġmaximum Ġof Ġthis Ġand Ġthe Ġother Ġvector . čĊĠĠ Ġ* čĊĠĠ Ġ* Ġ@ param Ġv čĊĠĠ Ġ* Ġthe Ġother Ġvector čĊĠĠ Ġ* Ġ@ return Ġa Ġvector Ġholding Ġthe Ġresult čĊĠĠ Ġ*/ čĊĠ Ġfun Ġmax ( v : ĠVector 2 fc ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġreturn Ġmax ( v , Ġthis Or New ()) čĊĠ Ġ} čĊčĊĠ Ġfun Ġmax ( v : ĠVector 2 fc , Ġdest : ĠVector 2 f ): ĠVector 2 f Ġ{ čĊĠĠĠ Ġdest . x Ġ= Ġif Ġ( x Ġ> Ġv . x ) Ġx Ġelse Ġv . x čĊĠĠĠ Ġdest . y Ġ= Ġif Ġ( y Ġ> Ġv . y ) Ġy Ġelse Ġv . y čĊĠĠĠ Ġreturn Ġthis čĊĠ Ġ} čĊčĊĠ Ġoperator Ġfun Ġminus ( v : ĠVector 2 f Minimal ): ĠVector 2 Ġ= čĊĠĠĠĠĠ ĠVector 2 ( x Ġ- Ġv . x , Ġy Ġ- Ġv . y ) čĊčĊĠ Ġcompanion Ġobject Ġ{ čĊčĊĠĠĠ Ġprivate Ġval ĠserialVersionUID Ġ= Ġ 1 L čĊĠ Ġ} čĊčĊĠ Ġfun Ġxy (): ĠVector 2 Ġ= ĠVector 2 ( x , Ġy ) č Ċ } čĊ