@ file : Suppress (" unused ", Ġ" Member Visibility Can Be Private ") Ċ package Ġorg . k rypt on mc . k rypt on . api . space Ċ Ċ import Ġorg . k rypt on mc . k rypt on . api . world . Location Ċ import Ġorg . k rypt on mc . k rypt on . api . world . World Ċ import Ġkotlin . math .* Ċ Ċ /** Ċ Ġ* ĠA Ġvector Ġis Ġan Ġelement Ġof Ġvector Ġspace . ĠThat Ġis , Ġa Ġthree Ġdimensional Ċ Ġ* Ġspace Ġthat Ġpos ses ses Ġboth Ġdirection Ġand Ġmagnitude . Ċ Ġ* Ċ Ġ* ĠA Ġ[ Vector ] Ġdiffers Ġfrom Ġa Ġ[ Location ] Ġin Ġthat Ġit Ġis Ġnot Ġworld Ġbound . Ċ Ġ* Ċ Ġ* Ġ@ author ĠCall um ĠSe ab ro ok Ċ Ġ* Ġ@ see Ġ[ Location ] Ċ Ġ*/ Ċ data Ġclass ĠVector ( ĊĠĠĠ Ġval Ġx : ĠDouble , ĊĠĠĠ Ġval Ġy : ĠDouble , ĊĠĠĠ Ġval Ġz : ĠDouble Ċ ) Ġ: ĠClone able Ġ{ ĊĊĠĠĠ Ġconstructor ( x : ĠInt , Ġy : ĠInt , Ġz : ĠInt ) Ġ: Ġthis ( x . toDouble (), Ġy . toDouble (), Ġz . toDouble ()) ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( other : ĠVector ) Ġ= Ġcopy ( x Ġ= Ġx Ġ+ Ġother . x , Ġy Ġ= Ġy Ġ+ Ġother . y , Ġz Ġ= Ġz Ġ+ Ġother . z ) ĊĊĠĠĠ Ġoperator Ġfun Ġminus ( other : ĠVector ) Ġ= Ġcopy ( x Ġ= Ġx Ġ- Ġother . x , Ġy Ġ= Ġy Ġ- Ġother . y , Ġz Ġ= Ġz Ġ- Ġother . z ) ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( other : ĠVector ) Ġ= Ġcopy ( x Ġ= Ġx Ġ* Ġother . x , Ġy Ġ= Ġy Ġ* Ġother . y , Ġz Ġ= Ġz Ġ* Ġother . z ) ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( factor : ĠInt ) Ġ= Ġcopy ( x Ġ= Ġx Ġ* Ġfactor , Ġy Ġ= Ġy Ġ* Ġfactor , Ġz Ġ= Ġz Ġ* Ġfactor ) ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( factor : ĠDouble ) Ġ= Ġcopy ( x Ġ= Ġx Ġ* Ġfactor , Ġy Ġ= Ġy Ġ* Ġfactor , Ġz Ġ= Ġz Ġ* Ġfactor ) ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( factor : ĠFloat ) Ġ= Ġcopy ( x Ġ= Ġx Ġ* Ġfactor , Ġy Ġ= Ġy Ġ* Ġfactor , Ġz Ġ= Ġz Ġ* Ġfactor ) ĊĊĠĠĠ Ġoperator Ġfun Ġdiv ( other : ĠVector ) Ġ= Ġcopy ( x Ġ= Ġx Ġ/ Ġother . x , Ġy Ġ= Ġy Ġ/ Ġother . y , Ġz Ġ= Ġz Ġ/ Ġother . z ) ĊĊĠĠĠ Ġoperator Ġfun Ġrem ( other : ĠVector ) Ġ= Ġcopy ( x Ġ= Ġx Ġ% Ġother . x , Ġy Ġ= Ġy Ġ% Ġother . y , Ġz Ġ= Ġz Ġ% Ġother . z ) ĊĊĠĠĠ Ġoperator Ġfun Ġunary Plus () Ġ= Ġcopy ( x Ġ= Ġ+ x , Ġy Ġ= Ġ+ y , Ġz Ġ= Ġ+ z ) ĊĊĠĠĠ Ġoperator Ġfun Ġunary Minus () Ġ= Ġcopy ( x Ġ= Ġ- x , Ġy Ġ= Ġ- y , Ġz Ġ= Ġ- z ) ĊĊĠĠĠ Ġoperator Ġfun Ġinc () Ġ= Ġcopy ( x Ġ= Ġx Ġ+ Ġ 1 , Ġy Ġ= Ġy Ġ+ Ġ 1 , Ġz Ġ= Ġz Ġ+ Ġ 1 ) ĊĊĠĠĠ Ġoperator Ġfun Ġdec () Ġ= Ġcopy ( x Ġ= Ġx Ġ- Ġ 1 , Ġy Ġ= Ġy Ġ- Ġ 1 , Ġz Ġ= Ġz Ġ- Ġ 1 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġmagnitude Ġof Ġthis Ġvector , Ġdefined Ġas Ġsqrt ( x ^ 2 Ġ+ Ġy ^ 2 Ġ+ Ġz ^ 2 ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġresult Ġof Ġthis Ġcalculation Ġmay Ġcall Ġ[ sqrt ] Ġif Ġthe Ġlength Ġhas Ġnot ĊĠĠĠĠ Ġ* Ġpreviously Ġbe Ġcomputed , Ġwhich Ġmay Ġbe Ġcost ly Ġon Ġsome ĠCP Us Ġor Ġvirtual ĊĠĠĠĠ Ġ* Ġmachines . Ġ[ Double . NaN ] Ġwill Ġbe Ġreturned Ġif Ġthe Ġinner Ġresult Ġof Ġthe ĊĠĠĠĠ Ġ* Ġ[ sqrt ] Ġfunction Ġoverflow s , Ġwhich Ġwill Ġbe Ġcaused Ġif Ġthe Ġlength Ġis Ġtoo ĊĠĠĠĠ Ġ* Ġlong . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlength Ġby Ġlazy Ġ{ Ġsqrt ( x Ġ* Ġx Ġ+ Ġy Ġ* Ġy Ġ+ Ġz Ġ* Ġz ) Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġmagnitude Ġof Ġthis Ġvector Ġsquared . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlength Squared Ġby Ġlazy Ġ{ Ġx Ġ* Ġx Ġ+ Ġy Ġ* Ġy Ġ+ Ġz Ġ* Ġz Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalculates Ġthe Ġdistance Ġbetween Ġthis Ġ[ Vector ] Ġand Ġthe Ġspecified ĊĠĠĠĠ Ġ* Ġ[ other ] Ġvector ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠB ew are Ġthat Ġthis Ġcalls Ġ[ sqrt ], Ġwhich Ġmay Ġbe Ġcost ly , Ġso Ġavoid ĊĠĠĠĠ Ġ* Ġrepeatedly Ġcalling Ġthis Ġmethod Ġto Ġcalculate Ġthe Ġvector 's Ġmagnitude . ĊĠĠĠĠ Ġ* ĠNaN Ġwill Ġbe Ġreturned Ġif Ġthe Ġinner Ġresult Ġof Ġthe Ġ[ sqrt ] Ġfunction ĊĠĠĠĠ Ġ* Ġoverflow s , Ġwhich Ġwill Ġoccur Ġif Ġthe Ġdistance Ġis Ġtoo Ġlong . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġother Ġthe Ġother Ġvector ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġdistance Ġbetween Ġthis Ġvector Ġand Ġthe Ġ[ other ] Ġvector ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdistance ( other : ĠVector ) Ġ= Ġsqrt (( x Ġ- Ġother . x ). square () Ġ+ Ġ( y Ġ- Ġother . y ). square () Ġ+ Ġ( z Ġ- Ġother . z ). square ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalculates Ġthe Ġsquared Ġdistance Ġbetween Ġthis Ġvector Ġand ĊĠĠĠĠ Ġ* Ġthe Ġspecified Ġ[ other ] Ġvector ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġother Ġthe Ġother Ġvector ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġdistance Ġbetween Ġthis Ġvector Ġand Ġthe Ġ[ other ] Ġvector ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdistance Squared ( other : ĠVector ) Ġ= Ġ( x Ġ- Ġother . x ). square () Ġ+ Ġ( y Ġ- Ġother . y ). square () Ġ+ Ġ( z Ġ- Ġother . z ). square () ĊĊĠĠĠ Ġfun Ġangle ( other : ĠVector ) Ġ= Ġa cos ( max ( min ( dot ( other ) Ġ/ Ġ( length Ġ* Ġother . length ), Ġ- 1 . 0 ), Ġ 1 . 0 )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġ[ Vector ] Ġthat Ġis Ġthe Ġmid point Ġbetween Ġthis Ġ[ Vector ] Ġand ĊĠĠĠĠ Ġ* Ġthe Ġspecified Ġ[ other ] Ġvector ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġother Ġthe Ġother Ġvector ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew Ġ[ Vector ] Ġthat Ġis Ġthe Ġmid point Ġbetween Ġthis Ġ[ Vector ] Ġand ĊĠĠĠĠ Ġ* Ġthe Ġspecified Ġ[ other ] Ġvector ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmid point ( other : ĠVector ) Ġ= Ġcopy ( x Ġ= Ġ( x Ġ+ Ġother . x ) Ġ/ Ġ 2 , Ġy Ġ= Ġ( y Ġ+ Ġother . y ) Ġ/ Ġ 2 , Ġz Ġ= Ġ( z Ġ+ Ġother . z ) Ġ/ Ġ 2 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalculates Ġthe Ġdot Ġproduct Ġof Ġthis Ġvector Ġwith Ġthe Ġspecified Ġ[ other ] ĊĠĠĠĠ Ġ* Ġvector . ĠThe Ġdot Ġproduct Ġis Ġdefines Ġas Ġx 1 Ġ* Ġx 2 Ġ+ Ġy 1 Ġ* Ġy 2 Ġ+ Ġz 1 Ġ* Ġz 2 ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġother Ġthe Ġother Ġvector ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġdot Ġproduct Ġof Ġthis Ġ[ Vector ] Ġand Ġthe Ġ[ other ] Ġvector ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdot ( other : ĠVector ) Ġ= Ġx Ġ* Ġother . x Ġ+ Ġy Ġ* Ġother . y Ġ+ Ġz Ġ* Ġother . z ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalculates Ġthe Ġcross Ġproduct Ġof Ġthis Ġvector Ġwith Ġthe Ġspecified Ġ[ other ] ĊĠĠĠĠ Ġ* Ġvector . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġcross Ġproduct Ġis Ġdefined Ġas : ĊĠĠĠĠ Ġ* Ġx Ġ= Ġy 1 Ġ* Ġz 2 Ġ- Ġy 2 Ġ* Ġz 1 ĊĠĠĠĠ Ġ* Ġy Ġ= Ġz 1 Ġ* Ġx 2 Ġ- Ġz 2 Ġ* Ġx 1 ĊĠĠĠĠ Ġ* Ġz Ġ= Ġx 1 Ġ* Ġy 2 Ġ- Ġx 2 Ġ* Ġy 1 ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġother Ġthe Ġother Ġvector ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew Ġ[ Vector ] Ġthat Ġis Ġthe Ġcross Ġproduct Ġof Ġthis Ġ[ Vector ] Ġand ĊĠĠĠĠ Ġ* Ġthe Ġspecified Ġ[ other ] Ġvector ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcross ( other : ĠVector ) Ġ= Ġcopy ( x Ġ= Ġy Ġ* Ġother . z Ġ- Ġother . y Ġ* Ġz , Ġy Ġ= Ġz Ġ* Ġother . x Ġ- Ġother . z Ġ* Ġx , Ġz Ġ= Ġx Ġ* Ġother . y Ġ- Ġother . x Ġ* Ġy ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNormal ises Ġthis Ġvector Ġto Ġa Ġunit Ġvector Ġ( a Ġvector Ġwith Ġa Ġlength Ġof Ġ 1 ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew Ġunit Ġ[ Vector ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnormalize () Ġ= Ġcopy ( x Ġ= Ġx Ġ/ Ġlength , Ġy Ġ= Ġy Ġ/ Ġlength , Ġz Ġ= Ġz Ġ/ Ġlength ) ĊĊĠĠĠ Ġval Ġis Normalized Ġby Ġlazy Ġ{ Ġabs ( length Squared Ġ- Ġ 1 ) Ġ< ĠEPS ILON Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġthis Ġ[ Vector ] Ġto Ġa Ġ[ Location ] Ġwith Ġthe Ġspecified ĊĠĠĠĠ Ġ* Ġ[ world ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġworld Ġthe Ġworld Ġof Ġthe Ġnew Ġ[ Location ] ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġnew Ġlocation Ġfrom Ġthis Ġvector ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Location ( world : ĠWorld ) Ġ= ĠLocation ( world , Ġx , Ġy , Ġz ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġthis Ġ[ Vector ] Ġto Ġa Ġ[ Location ] Ġwith Ġthe Ġspecified ĊĠĠĠĠ Ġ* Ġ[ world ], Ġ[ pitch ] Ġand Ġ[ yaw ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġworld Ġthe Ġworld Ġof Ġthe Ġnew Ġ[ Location ] ĊĠĠĠĠ Ġ* Ġ@ param Ġyaw Ġthe Ġyaw Ġof Ġthe Ġnew Ġ[ Location ] ĊĠĠĠĠ Ġ* Ġ@ param Ġpitch Ġthe Ġpitch Ġof Ġthe Ġnew Ġ[ Location ] ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġnew Ġlocation Ġfrom Ġthis Ġvector ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Location ( world : ĠWorld , Ġyaw : ĠFloat , Ġpitch : ĠFloat ) Ġ= ĠLocation ( world , Ġx , Ġy , Ġz , Ġyaw , Ġpitch ) ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠVector ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġabs ( x Ġ- Ġother . x ) Ġ< ĠEPS ILON Ġ&& Ġabs ( y Ġ- Ġother . y ) Ġ< ĠEPS ILON Ġ&& Ġabs ( z Ġ- Ġother . z ) Ġ< ĠEPS ILON Ġ&& Ġ( this :: class Ġ== Ġother :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhash Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 7 9 Ġ* Ġhash Ġ+ Ġ( x . to Raw Bits () Ġxor Ġ( x . to Raw Bits () Ġ ush r Ġ 3 2 )). toInt () ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 7 9 Ġ* Ġhash Ġ+ Ġ( y . to Raw Bits () Ġxor Ġ( y . to Raw Bits () Ġ ush r Ġ 3 2 )). toInt () ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 7 9 Ġ* Ġhash Ġ+ Ġ( z . to Raw Bits () Ġxor Ġ( z . to Raw Bits () Ġ ush r Ġ 3 2 )). toInt () ĊĠĠĠĠĠĠĠ Ġreturn Ġhash ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠError Ġcorrection Ġterm Ġfor Ġfuzzy Ġ[ equals ] Ġmethod , Ġto Ġaccount ĊĠĠĠĠĠĠĠĠ Ġ* Ġfor Ġfloating Ġpoint Ġerrors . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEPS ILON Ġ= Ġ 0 . 0 0 0 0 0 1 ĊĊĠĠĠĠĠĠĠ Ġval ĠZERO Ġ= ĠVector ( 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġthe Ġsquare Ġof Ġthis Ġnumber . Ċ Ġ* Ċ Ġ* ĠThe Ġsquare Ġof Ġa Ġnumber Ġis Ġthe Ġnumber Ġmultip lied Ġby Ġitself Ġonce . Ċ Ġ* Ċ Ġ* Ġ@ author ĠCall um ĠSe ab ro ok Ċ Ġ*/ Ċ fun ĠDouble . square () Ġ= Ġthis Ġ* Ġthis