Ċ package Ġorg . team 5 4 1 9 . fault . math . geometry Ċ Ċ import Ġorg . team 5 4 1 9 . fault . math . epsilon Equals Ċ import Ġorg . team 5 4 1 9 . fault . math . units . meters Ċ import Ġorg . team 5 4 1 9 . fault . math . units . SI Unit Ċ import Ġorg . team 5 4 1 9 . fault . math . units . SI Key Ċ import Ġorg . team 5 4 1 9 . fault . math . units . Meter Ċ import Ġkotlin . math . h ypot Ċ Ċ fun ĠRotation 2 d . to Translation () Ġ= ĠVector 2 ( cos . meters , Ġsin . meters ) Ċ type alias ĠVector 2 d Ġ= ĠVector 2 < Meter > Ċ Ċ @ Suppress (" Too Many Functions ") Ċ data Ġclass ĠVector 2 < T Ġ: ĠSI Key > Ġconstructor ( ĊĠĠĠ Ġval Ġx : ĠSI Unit < T >, ĊĠĠĠ Ġval Ġy : ĠSI Unit < T > Ċ ) Ġ: ĠState < Vector 2 < T >> Ġ{ ĊĊĠĠĠ Ġconstructor () Ġ: Ġthis ( SI Unit < T >( 0 . 0 ), ĠSI Unit < T >( 0 . 0 )) ĊĊĠĠĠ Ġ// ĠVector Ġto ĠTranslation 3 d ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 d , ĊĠĠĠĠĠĠĠ Ġdistance : ĠSI Unit < T > Ġ= ĠSI Unit < T >( 0 . 0 ) ĊĠĠĠ Ġ) Ġ: Ġthis Ġ( distance Ġ* Ġrotation . cos , Ġdistance Ġ* Ġrotation . sin ) ĊĊĠĠĠ Ġval Ġnorm Ġget () Ġ= Ġh ypot ( x . value , Ġy . value ). meters ĊĊĠĠĠ Ġoverride Ġfun Ġinterpolate ( end Value : ĠVector 2 < T >, Ġt : ĠDouble ) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġt Ġ<= Ġ 0 Ġ-> Ġthis ĊĠĠĠĠĠĠĠ Ġt Ġ>= Ġ 1 Ġ-> Ġend Value ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠVector 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx . lerp ( end Value . x , Ġt ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy . lerp ( end Value . y , Ġt ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdistance ( other : ĠVector 2 < T >): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġthis . x . value Ġ- Ġother . x . value ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġthis . y . value Ġ- Ġother . y . value ĊĠĠĠĠĠĠĠ Ġreturn Ġh ypot ( x , Ġy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( other : ĠVector 2 < T >) Ġ= ĠVector 2 ( x Ġ+ Ġother . x , Ġy Ġ+ Ġother . y ) ĊĠĠĠ Ġoperator Ġfun Ġminus ( other : ĠVector 2 < T >) Ġ= ĠVector 2 ( x Ġ- Ġother . x , Ġy Ġ- Ġother . y ) ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( other : ĠRotation 2 d ) Ġ= ĠVector 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ* Ġother . cos Ġ- Ġy Ġ* Ġother . sin , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ* Ġother . sin Ġ+ Ġy Ġ* Ġother . cos ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( other : ĠNumber ): ĠVector 2 < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactor Ġ= Ġother . toDouble () ĊĠĠĠĠĠĠĠ Ġreturn ĠVector 2 ( x Ġ* Ġfactor , Ġy Ġ* Ġfactor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġdiv ( other : ĠNumber ): ĠVector 2 < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactor Ġ= Ġother . toDouble () ĊĠĠĠĠĠĠĠ Ġreturn ĠVector 2 ( x Ġ/ Ġfactor , Ġy Ġ/ Ġfactor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġunary Minus () Ġ= ĠVector 2 (- x , Ġ- y ) ĊĊĠĠĠ Ġoverride Ġfun Ġto CSV () Ġ= Ġ"${ x . value }, Ġ${ y . value }" ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġto CSV () ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= Ġsuper . hashCode () ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġis ĠVector 2 <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġother . x . value Ġepsilon Equals Ġthis . x . value Ġ&& Ġother . y . value Ġepsilon Equals Ġthis . y . value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ