package Ġcom . phantom vk . dem oc enter . utility Ċ Ċ import Ġandroid . graphics . PointF Ċ import Ġkotlin . math . atan 2 Ċ import Ġkotlin . math . sqrt Ċ Ċ /** Ċ Ġ* ĠCalculate Ġthe Ġrotation Ġangle Ġof Ġview Ġby Ġtwo Ġpoints . Ċ Ġ* Ċ Ġ* Ġ@ return Ġangle Ġin Ġfloat Ċ Ġ*/ Ċ fun Ġget Rotation Angle ( ĊĠ Ġright Top : ĠPoint F , ĊĠ Ġleft Top : ĠPoint F Ċ ): ĠFloat Ġ{ ĊĠ Ġreturn Ġget Rotation Angle ( ĊĠĠĠ Ġright Top . y , Ġleft Top . y , ĊĠĠĠ Ġright Top . x , Ġleft Top . x ĊĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCalculate Ġthe Ġrotation Ġangle Ġof Ġview Ġby Ġtwo Ġpoints . Ċ Ġ* Ċ Ġ* Ġ@ return Ġangle Ġin Ġfloat Ċ Ġ*/ Ċ fun Ġget Rotation Angle ( ĊĠ Ġright Top X : ĠFloat , ĊĠ Ġright Top Y : ĠFloat , ĊĠ Ġleft Top X : ĠFloat , ĊĠ Ġleft Top Y : ĠFloat , Ċ ): ĠFloat Ġ{ ĊĠ Ġval Ġradians Ġ= Ġatan 2 ( ĊĠĠĠ Ġright Top Y Ġ- Ġleft Top Y , ĊĠĠĠ Ġright Top X Ġ- Ġleft Top X ĊĠ Ġ). toDouble () ĊĊĠ Ġreturn ĠMath . to Degrees ( radians ). toFloat () Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġcenter Ġcoordinates Ġof Ġview Ġby Ġtwo Ġpoints . Ċ Ġ* Ċ Ġ* Ġ@ return ĠPoint F Ċ Ġ*/ Ċ fun Ġget Center Coordinates ( ĊĠ Ġleft Top : ĠPoint F , ĊĠ Ġright Bottom : ĠPoint F Ċ ): ĠPoint F Ġ{ ĊĠ Ġval Ġx Ġ= Ġleft Top . x Ġ+ Ġright Bottom . x ĊĠ Ġval Ġy Ġ= Ġleft Top . y Ġ+ Ġright Bottom . y ĊĠ Ġreturn ĠPoint F ( x Ġ/ Ġ 2 , Ġy Ġ/ Ġ 2 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġcenter Ġcoordinates Ġof Ġview Ġby Ġtwo Ġpoints . Ċ Ġ* Ċ Ġ* Ġ@ param Ġsave To Ġresult Ġwill Ġsave Ġto Ġthis Ġgiven ĠPoint F Ċ Ġ*/ Ċ fun Ġget Center Coordinates ( ĊĠ Ġleft Top : ĠPoint F , ĊĠ Ġright Bottom : ĠPoint F , ĊĠ Ġsave To : ĠPoint F Ċ ) Ġ{ ĊĠ Ġval Ġx Ġ= Ġleft Top . x Ġ+ Ġright Bottom . x ĊĠ Ġval Ġy Ġ= Ġleft Top . y Ġ+ Ġright Bottom . y ĊĠ Ġsave To . set ( x Ġ/ Ġ 2 , Ġy Ġ/ Ġ 2 ) Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġdistance Ġby Ġtwo Ġpoints . Ċ Ġ* Ċ Ġ* Ġ@ return Ġdistance Ġin Ġfloat Ċ Ġ*/ Ċ fun Ġget Distance ( ĊĠ Ġpoint A : ĠPoint F , ĊĠ Ġpoint B : ĠPoint F Ċ ): ĠFloat Ġ{ ĊĠ Ġreturn Ġget Distance ( ĊĠĠĠ Ġpoint A . x , Ġpoint A . y , ĊĠĠĠ Ġpoint B . x , Ġpoint B . y ĊĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġdistance Ġby Ġtwo Ġpoints . Ċ Ġ* Ċ Ġ* Ġ@ return Ġdistance Ġin Ġfloat Ċ Ġ*/ Ċ fun Ġget Distance ( ĊĠ Ġx 1 : ĠFloat , Ġy 1 : ĠFloat , ĊĠ Ġx 2 : ĠFloat , Ġy 2 : ĠFloat Ċ ): ĠFloat Ġ{ ĊĠ Ġval Ġx Ġ= Ġx 1 Ġ- Ġx 2 ĊĠ Ġval Ġy Ġ= Ġy 1 Ġ- Ġy 2 ĊĠ Ġreturn Ġsqrt ( x Ġ* Ġx Ġ+ Ġy Ġ* Ġy ) Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġvector Ġwith Ġ 3 Ġpoints . Ċ Ġ*/ Ċ fun Ġget Vector ( ĊĠ Ġp 1 : ĠPoint F , ĊĠ Ġp 2 : ĠPoint F , ĊĠ Ġpoint : ĠPoint F Ċ ): ĠFloat Ġ{ ĊĠ Ġreturn Ġ( p 2 . x Ġ- Ġp 1 . x ) Ġ* Ġ( point . y Ġ- Ġp 1 . y ) Ġ- Ġ( point . x Ġ- Ġp 1 . x ) Ġ* Ġ( p 2 . y Ġ- Ġp 1 . y ) Ċ } Ċ Ċ /** Ċ Ġ* ĠIf Ġpoint Ġis Ġin Ġmatrix . Ċ Ġ*/ Ċ fun Ġis Point In Matrix ( ĊĠ Ġleft Top : ĠPoint F , ĊĠ Ġright Top : ĠPoint F , ĊĠ Ġleft Bottom : ĠPoint F , ĊĠ Ġright Bottom : ĠPoint F , ĊĠ Ġpoint : ĠPoint F Ċ ): ĠBoolean Ġ{ ĊĠ Ġval Ġc 1 Ġ= Ġget Vector ( left Top , Ġright Top , Ġpoint ) ĊĠ Ġval Ġc 2 Ġ= Ġget Vector ( left Bottom , Ġright Bottom , Ġpoint ) ĊĠ Ġval Ġc 3 Ġ= Ġget Vector ( left Top , Ġleft Bottom , Ġpoint ) ĊĠ Ġval Ġc 4 Ġ= Ġget Vector ( right Top , Ġright Bottom , Ġpoint ) ĊĠ Ġreturn Ġ( c 1 Ġ* Ġc 2 Ġ>= Ġ 0 ) Ġ&& Ġ( c 3 Ġ* Ġc 4 Ġ>= Ġ 0 ) Ċ }