/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠRoman ĠE liz ar ov . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġpoly hed ra . common . util Ċ Ċ import Ġkotlin . math .* Ċ Ċ interface ĠVec 2 Ġ{ ĊĠĠĠ Ġval Ġx : ĠDouble ĊĠĠĠ Ġval Ġy : ĠDouble Ċ } Ċ Ċ fun ĠVec 2 ( x : ĠDouble , Ġy : ĠDouble ): ĠVec 2 Ġ= ĠMutable Vec 2 ( x , Ġy ) Ċ Ċ open Ġclass ĠMutable Vec 2 ( ĊĠĠĠ Ġoverride Ġvar Ġx : ĠDouble Ġ= Ġ 0 . 0 , ĊĠĠĠ Ġoverride Ġvar Ġy : ĠDouble Ġ= Ġ 0 . 0 Ċ ) Ġ: ĠVec 2 Ġ{ ĊĠĠĠ Ġconstructor ( v : ĠVec 2 ) Ġ: Ġthis ( v . x , Ġv . y ) ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ"[ ${ x . fmt }, Ġ${ y . fmt }] " Ċ } Ċ Ċ fun Ġnorm ( x : ĠDouble , Ġy : ĠDouble ): ĠDouble Ġ= ĊĠĠĠ Ġsqrt ( sqr ( x ) Ġ+ Ġsq r ( y )) Ċ Ċ val ĠVec 2 . norm : ĠDouble ĊĠĠĠ Ġget () Ġ= Ġnorm ( x , Ġy ) ĊĊĊ