package Ġglm _. vec 2 . operators Ċ Ċ import Ġglm _. d Ċ import Ġglm _. vec 2 . Vec 2 d Ċ import Ġglm _. vec 2 . Vec 2 d . Companion . div Ċ import Ġglm _. vec 2 . Vec 2 d . Companion . minus Ċ import Ġglm _. vec 2 . Vec 2 d . Companion . plus Ċ import Ġglm _. vec 2 . Vec 2 d . Companion . rem Ċ import Ġglm _. vec 2 . Vec 2 d . Companion . times Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠG Bar b ier i Ġon Ġ 0 8 . 1 1 . 2 0 1 6 . Ċ Ġ*/ Ċ interface Ġop Vec 2 d Ġ{ ĊĊĠĠĠ Ġfun Ġplus ( res : ĠVec 2 d , Ġa : ĠVec 2 d , Ġb X : ĠDouble , Ġb Y : ĠDouble ): ĠVec 2 d Ġ{ ĊĠĠĠĠĠĠĠ Ġres . x Ġ= Ġa . x Ġ+ Ġb X ĊĠĠĠĠĠĠĠ Ġres . y Ġ= Ġa . y Ġ+ Ġb Y ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġminus ( res : ĠVec 2 d , Ġa : ĠVec 2 d , Ġb X : ĠDouble , Ġb Y : ĠDouble ): ĠVec 2 d Ġ{ ĊĠĠĠĠĠĠĠ Ġres . x Ġ= Ġa . x Ġ- Ġb X ĊĠĠĠĠĠĠĠ Ġres . y Ġ= Ġa . y Ġ- Ġb Y ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġminus ( res : ĠVec 2 d , Ġa X : ĠDouble , Ġa Y : ĠDouble , Ġb : ĠVec 2 d ): ĠVec 2 d Ġ{ ĊĠĠĠĠĠĠĠ Ġres . x Ġ= Ġa X Ġ- Ġb . x ĊĠĠĠĠĠĠĠ Ġres . y Ġ= Ġa Y Ġ- Ġb . y ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtimes ( res : ĠVec 2 d , Ġa : ĠVec 2 d , Ġb X : ĠDouble , Ġb Y : ĠDouble ): ĠVec 2 d Ġ{ ĊĠĠĠĠĠĠĠ Ġres . x Ġ= Ġa . x Ġ* Ġb X ĊĠĠĠĠĠĠĠ Ġres . y Ġ= Ġa . y Ġ* Ġb Y ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdiv ( res : ĠVec 2 d , Ġa : ĠVec 2 d , Ġb X : ĠDouble , Ġb Y : ĠDouble ): ĠVec 2 d Ġ{ ĊĠĠĠĠĠĠĠ Ġres . x Ġ= Ġa . x Ġ/ Ġb X ĊĠĠĠĠĠĠĠ Ġres . y Ġ= Ġa . y Ġ/ Ġb Y ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdiv ( res : ĠVec 2 d , Ġa X : ĠDouble , Ġa Y : ĠDouble , Ġb : ĠVec 2 d ): ĠVec 2 d Ġ{ ĊĠĠĠĠĠĠĠ Ġres . x Ġ= Ġa X Ġ/ Ġb . x ĊĠĠĠĠĠĠĠ Ġres . y Ġ= Ġa Y Ġ/ Ġb . y ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrem ( res : ĠVec 2 d , Ġa : ĠVec 2 d , Ġb X : ĠDouble , Ġb Y : ĠDouble ): ĠVec 2 d Ġ{ ĊĠĠĠĠĠĠĠ Ġres . x Ġ= Ġa . x Ġ% Ġb X ĊĠĠĠĠĠĠĠ Ġres . y Ġ= Ġa . y Ġ% Ġb Y ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrem ( res : ĠVec 2 d , Ġa X : ĠDouble , Ġa Y : ĠDouble , Ġb : ĠVec 2 d ): ĠVec 2 d Ġ{ ĊĠĠĠĠĠĠĠ Ġres . x Ġ= Ġa X Ġ% Ġb . x ĊĠĠĠĠĠĠĠ Ġres . y Ġ= Ġa Y Ġ% Ġb . y ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ // Ġ-- ĠSpecific Ġbinary Ġarithmetic Ġoperators Ġ-- Ċ Ċ infix Ġoperator Ġfun ĠDouble . plus ( b : ĠVec 2 d ) Ġ= Ġplus ( Vec 2 d (), Ġb , Ġthis , Ġthis ) Ċ fun ĠDouble . plus ( b : ĠVec 2 d , Ġres : ĠVec 2 d ) Ġ= Ġplus ( res , Ġb , Ġthis , Ġthis ) Ċ infix Ġfun ĠDouble . plus Assign ( b : ĠVec 2 d ) Ġ= Ġplus ( b , Ġb , Ġthis , Ġthis ) Ċ Ċ infix Ġoperator Ġfun ĠDouble . minus ( b : ĠVec 2 d ) Ġ= Ġminus ( Vec 2 d (), Ġthis , Ġthis , Ġb ) Ċ fun ĠDouble . minus ( b : ĠVec 2 d , Ġres : ĠVec 2 d ) Ġ= Ġminus ( res , Ġb , Ġthis , Ġthis ) Ċ infix Ġfun ĠDouble . minus Assign ( b : ĠVec 2 d ) Ġ= Ġminus ( b , Ġthis , Ġthis , Ġb ) Ċ Ċ infix Ġoperator Ġfun ĠDouble . times ( b : ĠVec 2 d ) Ġ= Ġtimes ( Vec 2 d (), Ġb , Ġthis , Ġthis ) Ċ fun ĠDouble . times ( b : ĠVec 2 d , Ġres : ĠVec 2 d ) Ġ= Ġtimes ( res , Ġb , Ġthis , Ġthis ) Ċ infix Ġfun ĠDouble . times Assign ( b : ĠVec 2 d ) Ġ= Ġtimes ( b , Ġb , Ġthis , Ġthis ) Ċ Ċ infix Ġoperator Ġfun ĠDouble . div ( b : ĠVec 2 d ) Ġ= Ġdiv ( Vec 2 d (), Ġthis , Ġthis , Ġb ) Ċ fun ĠDouble . div ( b : ĠVec 2 d , Ġres : ĠVec 2 d ) Ġ= Ġdiv ( res , Ġb , Ġthis , Ġthis ) Ċ infix Ġfun ĠDouble . div Assign ( b : ĠVec 2 d ) Ġ= Ġdiv ( b , Ġthis , Ġthis , Ġb ) Ċ Ċ infix Ġoperator Ġfun ĠDouble . rem ( b : ĠVec 2 d ) Ġ= Ġrem ( Vec 2 d (), Ġthis , Ġthis , Ġb ) Ċ fun ĠDouble . rem ( b : ĠVec 2 d , Ġres : ĠVec 2 d ) Ġ= Ġrem ( res , Ġb , Ġthis , Ġthis ) Ċ infix Ġfun ĠDouble . rem Assign ( b : ĠVec 2 d ) Ġ= Ġrem ( b , Ġthis , Ġthis , Ġb ) ĊĊ Ċ // Ġ-- ĠGeneric Ġbinary Ġarithmetic Ġoperators Ġ-- Ċ Ċ infix Ġoperator Ġfun ĠNumber . plus ( b : ĠVec 2 d ) Ġ= Ġplus ( Vec 2 d (), Ġb , Ġthis . d , Ġthis . d ) Ċ fun ĠNumber . plus ( b : ĠVec 2 d , Ġres : ĠVec 2 d ) Ġ= Ġplus ( res , Ġb , Ġthis . d , Ġthis . d ) Ċ infix Ġfun ĠNumber . plus Assign ( b : ĠVec 2 d ) Ġ= Ġplus ( b , Ġb , Ġthis . d , Ġthis . d ) Ċ Ċ infix Ġoperator Ġfun ĠNumber . minus ( b : ĠVec 2 d ) Ġ= Ġminus ( Vec 2 d (), Ġthis . d , Ġthis . d , Ġb ) Ċ fun ĠNumber . minus ( b : ĠVec 2 d , Ġres : ĠVec 2 d ) Ġ= Ġminus ( res , Ġb , Ġthis . d , Ġthis . d ) Ċ infix Ġfun ĠNumber . minus Assign ( b : ĠVec 2 d ) Ġ= Ġminus ( b , Ġthis . d , Ġthis . d , Ġb ) Ċ Ċ infix Ġoperator Ġfun ĠNumber . times ( b : ĠVec 2 d ) Ġ= Ġtimes ( Vec 2 d (), Ġb , Ġthis . d , Ġthis . d ) Ċ fun ĠNumber . times ( b : ĠVec 2 d , Ġres : ĠVec 2 d ) Ġ= Ġtimes ( res , Ġb , Ġthis . d , Ġthis . d ) Ċ infix Ġfun ĠNumber . times Assign ( b : ĠVec 2 d ) Ġ= Ġtimes ( b , Ġb , Ġthis . d , Ġthis . d ) Ċ Ċ infix Ġoperator Ġfun ĠNumber . div ( b : ĠVec 2 d ) Ġ= Ġdiv ( Vec 2 d (), Ġthis . d , Ġthis . d , Ġb ) Ċ fun ĠNumber . div ( b : ĠVec 2 d , Ġres : ĠVec 2 d ) Ġ= Ġdiv ( res , Ġb , Ġthis . d , Ġthis . d ) Ċ infix Ġfun ĠNumber . div Assign ( b : ĠVec 2 d ) Ġ= Ġdiv ( b , Ġthis . d , Ġthis . d , Ġb ) Ċ Ċ infix Ġoperator Ġfun ĠNumber . rem ( b : ĠVec 2 d ) Ġ= Ġrem ( Vec 2 d (), Ġthis . d , Ġthis . d , Ġb ) Ċ fun ĠNumber . rem ( b : ĠVec 2 d , Ġres : ĠVec 2 d ) Ġ= Ġrem ( res , Ġb , Ġthis . d , Ġthis . d ) Ċ infix Ġfun ĠNumber . rem Assign ( b : ĠVec 2 d ) Ġ= Ġrem ( b , Ġthis . d , Ġthis . d , Ġb )