package Ġmath . vectors Ċ Ċ class ĠVector Int 2 D ( x : ĠInt , Ġy : ĠInt ) ĊĠĠĠ Ġ: ĠAbstract Vector 2 D < Vector Int 2 D , ĠInt >( x , Ġy ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( x : ĠInt , Ġy : ĠInt ): ĠVector Int 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . x Ġ+= Ġx ĊĠĠĠĠĠĠĠ Ġthis . y Ġ+= Ġy ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubtract ( x : ĠInt , Ġy : ĠInt ): ĠVector Int 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġadd (- x , Ġ- y ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmultiply ( x : ĠInt , Ġy : ĠInt ): ĠVector Int 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . x Ġ*= Ġx ĊĠĠĠĠĠĠĠ Ġthis . y Ġ*= Ġy ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdivide ( x : ĠInt , Ġy : ĠInt ): ĠVector Int 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmultiply ( 1 Ġ/ Ġx , Ġ 1 / Ġy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Magnitude Squared (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( x * x Ġ+ Ġy * y ). toDouble () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Dot Product ( vector : ĠVector Int 2 D ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( x Ġ* Ġvector . x ) Ġ+ Ġ( y Ġ* Ġvector . y ). toDouble () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Array (): ĠArray < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( x , y ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclone (): ĠVector Int 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠVector Int 2 D ( x , Ġy ) ĊĠĠĠ Ġ} Ċ Ċ }