package Ġio . github . scene view . ar . ar core Ċ Ċ import Ġcom . google . ar . core . Pose Ċ import Ġdev . rom a ing uy . kotlin . math . Quaternion Ċ import Ġio . github . scene view . math . Direction Ċ import Ġio . github . scene view . math . Position Ċ import Ġio . github . scene view . math . Rotation Ċ Ċ val ĠP ose . position : ĠPosition ĊĠĠĠ Ġget () Ġ= ĠPosition ( x Ġ= Ġtx (), Ġy Ġ= Ġty (), Ġz Ġ= Ġtz ()) Ċ Ċ val ĠP ose . qu aternion : ĠQuaternion ĊĠĠĠ Ġget () Ġ= ĠQuaternion ( x Ġ= Ġq x (), Ġy Ġ= Ġq y (), Ġz Ġ= Ġq z (), Ġw Ġ= Ġqw ()) Ċ Ċ val ĠP ose . rotation : ĠRotation ĊĠĠĠ Ġget () Ġ= Ġquaternion . to Euler Angles () Ċ Ċ val ĠP ose . x Direction : ĠDirection ĊĠĠĠ Ġget () Ġ= Ġx Axis !!. let Ġ{ Ġ( x , Ġy , Ġz ) Ġ-> ĊĠĠĠĠĠĠĠ ĠDirection ( x , Ġy , Ġz ) ĊĠĠĠ Ġ} Ċ Ċ val ĠP ose . y Direction : ĠDirection ĊĠĠĠ Ġget () Ġ= Ġy Axis !!. let Ġ{ Ġ( x , Ġy , Ġz ) Ġ-> ĊĠĠĠĠĠĠĠ ĠDirection ( x , Ġy , Ġz ) ĊĠĠĠ Ġ} Ċ Ċ val ĠP ose . z Direction : ĠDirection ĊĠĠĠ Ġget () Ġ= Ġz Axis !!. let Ġ{ Ġ( x , Ġy , Ġz ) Ġ-> ĊĠĠĠĠĠĠĠ ĠDirection ( x , Ġy , Ġz ) ĊĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠCalculate Ġthe Ġnormal Ġdistance Ġfrom Ġthis Ġto Ġthe Ġother , Ġthe Ġgiven Ġother Ġpose Ġshould Ġhave Ġy Ġaxis Ċ Ġ* Ġparallel Ġto Ġplane 's Ġnormal , Ġfor Ġexample Ġplane 's Ġcenter Ġpose Ġor Ġhit Ġtest Ġpose . Ċ Ġ*/ Ċ fun ĠP ose . distance To ( other : ĠP ose ): ĠFloat Ġ{ ĊĠĠĠ Ġval Ġnormal Ġ= ĠFloat Array ( 3 ) ĊĠĠĠ Ġ// ĠGet Ġtransformed ĠY Ġaxis Ġof Ġplane 's Ġcoordinate Ġsystem . ĊĠĠĠ Ġget Trans formed Axis ( 1 , Ġ 1 . 0 f , Ġnormal , Ġ 0 ) ĊĠĠĠ Ġ// ĠCompute Ġdot Ġproduct Ġof Ġplane 's Ġnormal Ġwith Ġvector Ġfrom Ġcamera Ġto Ġplane Ġcenter . ĊĠĠĠ Ġreturn Ġ( other . tx () Ġ- Ġtx ()) Ġ* Ġnormal [ 0 ] Ġ+ Ġ( other . ty () Ġ- Ġty ()) Ġ* Ġnormal [ 1 ] Ġ+ Ġ( other . tz () Ġ- Ġtz ()) Ġ* Ġnormal [ 2 ] Ċ } Ċ Ċ // ĠCalculate Ġthe Ġnormal Ġdistance Ġto Ġplane Ġfrom Ġcamera Pose , Ġthe Ġgiven Ġplane Pose Ġshould Ġhave Ġy Ġaxis Ċ // Ġparallel Ġto Ġplane 's Ġnormal , Ġfor Ġexample Ġplane 's Ġcenter Ġpose Ġor Ġhit Ġtest Ġpose . Ċ fun ĠP ose . calculate Distance To Plane ( camera Pose : ĠP ose ): ĠFloat Ġ{ ĊĠĠĠ Ġval Ġnormal Ġ= ĠFloat Array ( 3 ) ĊĠĠĠ Ġval Ġcamera X Ġ= Ġcamera Pose . tx () ĊĠĠĠ Ġval Ġcamera Y Ġ= Ġcamera Pose . ty () ĊĠĠĠ Ġval Ġcamera Z Ġ= Ġcamera Pose . tz () ĊĠĠĠ Ġ// ĠGet Ġtransformed ĠY Ġaxis Ġof Ġplane 's Ġcoordinate Ġsystem . ĊĠĠĠ Ġthis . get Trans formed Axis ( 1 , Ġ 1 . 0 f , Ġnormal , Ġ 0 ) ĊĠĠĠ Ġ// ĠCompute Ġdot Ġproduct Ġof Ġplane 's Ġnormal Ġwith Ġvector Ġfrom Ġcamera Ġto Ġplane Ġcenter . ĊĠĠĠ Ġreturn Ġ( camera X Ġ- Ġthis . tx ()) Ġ* Ġnormal [ 0 ] Ġ+ Ġ( camera Y Ġ- Ġthis . ty ()) Ġ* Ġnormal [ 1 ] Ġ+ Ġ( camera Z Ġ- Ġthis . tz ()) Ġ* Ġnormal [ 2 ] Ċ } Ċ