package Ġtz . co . as oft Ċ Ċ fun Ġ< N Ġ: ĠNumber > ĠVec ( x : ĠN , Ġy : ĠN , Ġz : ĠN ? Ġ= Ġnull ) Ġ= ĠVec 3 ( ĊĠĠĠ Ġx Ġ= Ġx , ĊĠĠĠ Ġy Ġ= Ġy , ĊĠĠĠ Ġz Ġ= Ġz Ġ?: Ġ 0 Ċ ) Ċ Ċ operator Ġfun ĠVec 2 <* >. plus ( p : ĠVec 3 <* >) Ġ= ĠVec 3 ( ĊĠĠĠ Ġx Ġ= Ġx . toDouble () Ġ+ Ġp . x . toDouble (), ĊĠĠĠ Ġy Ġ= Ġy . toDouble () Ġ+ Ġp . y . toDouble (), ĊĠĠĠ Ġz Ġ= Ġp . z . toDouble () Ċ ) Ċ Ċ operator Ġfun ĠVec 3 <* >. plus ( p : ĠVec 2 <* >) Ġ= ĠVec 3 ( ĊĠĠĠ Ġx Ġ= Ġx . toDouble () Ġ+ Ġp . x . toDouble (), ĊĠĠĠ Ġy Ġ= Ġy . toDouble () Ġ+ Ġp . y . toDouble (), ĊĠĠĠ Ġz Ġ= Ġz . toDouble () Ċ ) Ċ Ċ operator Ġfun ĠVec 2 <* >. minus ( p : ĠVec 3 <* >) Ġ= ĠVec 3 ( ĊĠĠĠ Ġx Ġ= Ġx . toDouble () Ġ- Ġp . x . toDouble (), ĊĠĠĠ Ġy Ġ= Ġy . toDouble () Ġ- Ġp . y . toDouble (), ĊĠĠĠ Ġz Ġ= Ġ- p . z . toDouble () Ċ ) Ċ Ċ operator Ġfun ĠVec 3 <* >. minus ( p : ĠVec 2 <* >) Ġ= ĠVec 3 ( ĊĠĠĠ Ġx Ġ= Ġx . toDouble () Ġ- Ġp . x . toDouble (), ĊĠĠĠ Ġy Ġ= Ġy . toDouble () Ġ- Ġp . y . toDouble (), ĊĠĠĠ Ġz Ġ= Ġz . toDouble () Ċ ) Ċ Ċ object ĠVec Ġ{ ĊĠĠĠ Ġval Ġi Ġ= ĠVec 2 ( 1 , Ġ 0 ) ĊĠĠĠ Ġval Ġj Ġ= ĠVec 2 ( 0 , Ġ 1 ) ĊĠĠĠ Ġval Ġk Ġ= ĠVec 3 ( 0 , Ġ 0 , Ġ 1 ) Ċ }