/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠAl berto ĠIr ur ue ta ĠCar ro Ġ( al berto @ ir ur ue ta . com ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . ir ur ue ta . android . gl utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . hardware . camera 2 . Camera AccessException Ċ import Ġandroid . hardware . camera 2 . Camera Character istics Ċ import Ġandroid . hardware . camera 2 . Camera Manager Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . Surface Ċ import Ġandroid . view . WindowManager Ċ import Ġcom . ir ur ue ta . algebra . Matrix Ċ import Ġcom . ir ur ue ta . geometry .* Ċ Ċ /** Ċ Ġ* ĠUtility Ġclass Ġto Ġdetermine Ġthe Ġorientation Ġof Ġthe Ġcamera Ġsensor Ġrespect Ġto Ġcurrent Ġdevice Ċ Ġ* Ġorientation . Ċ Ġ* ĠDetermin ing Ġsuch Ġorientation Ġis Ġuseful Ġfor ĠAug ment ed ĠRe ality Ġapplications , Ġwhere Ġa Ċ Ġ* Ġpin hole Ġcamera Ġneeds Ġto Ġbe Ġestimated Ġtaking Ġinto Ġaccount Ġsuch Ġorientation . Ċ Ġ* Ċ Ġ* Ġ@ see ĠOpen Gl To Camera Helper Ċ Ġ*/ Ċ object ĠOrientation Helper Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOrientation Ġcorresponding Ġto Ġ 0 Ġdegrees . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconst Ġval ĠOR IENTATION _ 0 _ DE GRE ES Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOrientation Ġcorresponding Ġto Ġ 9 0 Ġdegrees . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconst Ġval ĠOR IENTATION _ 9 0 _ DE GRE ES Ġ= Ġ 9 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOrientation Ġcorresponding Ġto Ġ 1 8 0 Ġdegrees . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconst Ġval ĠOR IENTATION _ 1 8 0 _ DE GRE ES Ġ= Ġ 1 8 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOrientation Ġcorresponding Ġto Ġ 2 7 0 Ġdegrees . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconst Ġval ĠOR IENTATION _ 2 7 0 _ DE GRE ES Ġ= Ġ 2 7 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġorientation Ġof Ġcamera Ġsensor . ĠCamera Ġsensor Ġorientation Ġis Ġcomputed Ġin Ġterms Ġof Ġdevice ĊĠĠĠĠ Ġ* Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġ ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ return ĠOrientation Ġof Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ throws ĠCamera AccessException ĠIf Ġapplication Ġdoes Ġnot Ġhave Ġpermission Ġto Ġaccess Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ throws ĠNullPointerException Ġ ĠIf Ġcamera Ġservice Ġis Ġnot Ġavailable . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Camera AccessException :: class ) ĊĠĠĠ Ġfun Ġget Camera Display Orientation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString ĊĠĠĠ Ġ): ĠCamera To Display Orientation Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconvert Orientation Degrees To Enum ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Camera Display Orientation Degrees ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġorientation Ġof Ġcamera Ġsensor . ĠCamera Ġsensor Ġorientation Ġis Ġcomputed Ġin Ġterms Ġof Ġdevice ĊĠĠĠĠ Ġ* Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ return ĠOrientation Ġof Ġcamera Ġsensor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Camera Display Orientation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics ĊĠĠĠ Ġ): ĠCamera To Display Orientation Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconvert Orientation Degrees To Enum ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Camera Display Orientation Degrees ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristics ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ* ĠGets Ġclock wise Ġorientation Ġof Ġcamera Ġsensor Ġrespect Ġto Ġdisplay Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġ ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ return ĠClock wise Ġorientation Ġof Ġcamera Ġsensor Ġexpressed Ġin Ġdegrees . ĊĠĠĠĠ Ġ* Ġ@ throws ĠCamera AccessException ĠIf Ġapplication Ġdoes Ġnot Ġhave Ġpermission Ġto Ġaccess Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ throws ĠNullPointerException Ġ ĠIf Ġcamera Ġservice Ġis Ġnot Ġavailable . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Camera AccessException :: class ) ĊĠĠĠ Ġfun Ġget Camera Display Orientation Degrees ( context : ĠContext , Ġcamera Id : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġcontext . getSystem Service ( Context . CAMERA _ SERVICE ) Ġas ĠCamera Manager ĊĠĠĠĠĠĠĠ Ġval Ġcharacteristics Ġ= Ġmanager . get Camera Character istics ( camera Id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Camera Display Orientation Degrees ( context , Ġcharacteristics ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġclock wise Ġorientation Ġof Ġcamera Ġsensor Ġrespect Ġto Ġdisplay Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ return ĠClock wise Ġorientation Ġof Ġcamera Ġsensor Ġexpressed Ġin Ġdegrees . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġfun Ġget Camera Display Orientation Degrees ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCamera Ġsensor Ġorientation Ġrespect Ġthe Ġdevice ĊĠĠĠĠĠĠĠ Ġval Ġcamera Sensor Orientation Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristics . get ( Camera Character istics . SENSOR _ OR IENTATION ) Ġ?: Ġreturn Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠDevice Ġorientation Ġ( portrait , Ġlandscape , Ġetc ) ĊĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . R ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . display ?. rotation ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwindow Manager Ġ= Ġcontext . getSystem Service ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext . WINDOW _ SERVICE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġas ĠWindow Manager ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwindow Manager . default Display . rotation ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdevice Orientation Ġ= Ġwhen Ġ( rotation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSurface . ROT ATION _ 0 Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSurface . ROT ATION _ 9 0 Ġ-> Ġ 9 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSurface . ROT ATION _ 1 8 0 Ġ-> Ġ 1 8 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSurface . ROT ATION _ 2 7 0 Ġ-> Ġ 2 7 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ( camera Sensor Orientation Ġ- Ġdevice Orientation Ġ+ Ġ 3 6 0 ) Ġ% Ġ 3 6 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrotation Ġrequired Ġto Ġconvert Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġrotation Ġdoes Ġnot Ġtake Ġinto Ġaccount Ġthe Ġre versal Ġof Ġy Ġcoordinates ĊĠĠĠĠ Ġ* Ġperformed Ġwhen Ġestim ating Ġa Ġtransformation , Ġand Ġonly Ġtakes Ġinto Ġaccount ĊĠĠĠĠ Ġ* Ġthe Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcounter - clock wise Ġrotation Ġindicating Ġthe ĊĠĠĠĠ Ġ* Ġamount Ġof Ġdisplay Ġrotation Ġrespect Ġthe Ġcamera Ġsensor Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Rotation ( context : ĠContext , Ġcamera Id : ĠString , Ġresult : ĠRotation 2 D ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġget Camera Display Orientation Degrees ( context , Ġcamera Id ) ĊĠĠĠĠĠĠĠ Ġresult . theta Ġ= ĠMath . to Radians ( angle . toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrotation Ġrequired Ġto Ġconvert Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġrotation Ġdoes Ġnot Ġtake Ġinto Ġaccount Ġthe Ġre versal Ġof Ġy Ġcoordinates ĊĠĠĠĠ Ġ* Ġperformed Ġwhen Ġestim ating Ġa Ġtransformation , Ġand Ġonly Ġtakes Ġinto Ġaccount ĊĠĠĠĠ Ġ* Ġthe Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcounter - clock wise Ġrotation Ġindicating Ġthe ĊĠĠĠĠ Ġ* Ġamount Ġof Ġdisplay Ġrotation Ġrespect Ġthe Ġcamera Ġsensor Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Rotation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġresult : ĠRotation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġget Camera Display Orientation Degrees ( context , Ġcharacteristics ) ĊĠĠĠĠĠĠĠ Ġresult . theta Ġ= ĠMath . to Radians ( angle . toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrotation Ġrequired Ġto Ġconvert Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġrotation Ġdoes Ġnot Ġtake Ġinto Ġaccount Ġthe Ġre versal Ġof Ġy Ġcoordinates ĊĠĠĠĠ Ġ* Ġperformed Ġwhen Ġestim ating Ġa Ġtransformation , Ġand Ġonly Ġtakes Ġinto Ġaccount ĊĠĠĠĠ Ġ* Ġthe Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ return Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Rotation ( context : ĠContext , Ġcamera Id : ĠString ): ĠRotation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġget Camera Display Orientation Degrees ( context , Ġcamera Id ) ĊĠĠĠĠĠĠĠ Ġreturn ĠRotation 2 D ( Math . to Radians ( angle . toDouble ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrotation Ġrequired Ġto Ġconvert Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġrotation Ġdoes Ġnot Ġtake Ġinto Ġaccount Ġthe Ġre versal Ġof Ġy Ġcoordinates ĊĠĠĠĠ Ġ* Ġperformed Ġwhen Ġestim ating Ġa Ġtransformation , Ġand Ġonly Ġtakes Ġinto Ġaccount ĊĠĠĠĠ Ġ* Ġthe Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ return Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Rotation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics ĊĠĠĠ Ġ): ĠRotation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġget Camera Display Orientation Degrees ( context , Ġcharacteristics ) ĊĠĠĠĠĠĠĠ Ġreturn ĠRotation 2 D ( Math . to Radians ( angle . toDouble ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrotation Ġrequired Ġto Ġconvert Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĊĠĠĠĠ Ġ* ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġrotation Ġdoes Ġnot Ġtake Ġinto Ġaccount Ġthe Ġre versal Ġof Ġy Ġcoordinates ĊĠĠĠĠ Ġ* Ġperformed Ġwhen Ġestim ating Ġa Ġtransformation , Ġand Ġonly Ġtakes Ġinto Ġaccount ĊĠĠĠĠ Ġ* Ġthe Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcounter - clock wise Ġrotation Ġindicating Ġthe ĊĠĠĠĠ Ġ* Ġinverse Ġof Ġdisplay Ġrotation Ġrespect Ġthe Ġcamera Ġsensor Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Rotation ( context : ĠContext , Ġcamera Id : ĠString , Ġresult : ĠRotation 2 D ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġget Camera Display Orientation Degrees ( context , Ġcamera Id ) ĊĠĠĠĠĠĠĠ Ġresult . theta Ġ= ĠMath . to Radians (- angle . toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrotation Ġrequired Ġto Ġconvert Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĊĠĠĠĠ Ġ* ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġrotation Ġdoes Ġnot Ġtake Ġinto Ġaccount Ġthe Ġre versal Ġof Ġy Ġcoordinates ĊĠĠĠĠ Ġ* Ġperformed Ġwhen Ġestim ating Ġa Ġtransformation , Ġand Ġonly Ġtakes Ġinto Ġaccount ĊĠĠĠĠ Ġ* Ġthe Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcounter - clock wise Ġrotation Ġindicating Ġthe ĊĠĠĠĠ Ġ* Ġinverse Ġof Ġdisplay Ġrotation Ġrespect Ġthe Ġcamera Ġsensor Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Rotation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġresult : ĠRotation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġget Camera Display Orientation Degrees ( context , Ġcharacteristics ) ĊĠĠĠĠĠĠĠ Ġresult . theta Ġ= ĠMath . to Radians (- angle . toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrotation Ġrequired Ġto Ġconvert Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĊĠĠĠĠ Ġ* ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġrotation Ġdoes Ġnot Ġtake Ġinto Ġaccount Ġthe Ġre versal Ġof Ġy Ġcoordinates ĊĠĠĠĠ Ġ* Ġperformed Ġwhen Ġestim ating Ġa Ġtransformation , Ġand Ġonly Ġtakes Ġinto Ġaccount ĊĠĠĠĠ Ġ* Ġthe Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ return Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġinverse Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Rotation ( context : ĠContext , Ġcamera Id : ĠString ): ĠRotation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġget Camera Display Orientation Degrees ( context , Ġcamera Id ) ĊĠĠĠĠĠĠĠ Ġreturn ĠRotation 2 D ( Math . to Radians (- angle . toDouble ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġrotation Ġrequired Ġto Ġconvert Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĊĠĠĠĠ Ġ* ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġrotation Ġdoes Ġnot Ġtake Ġinto Ġaccount Ġthe Ġre versal Ġof Ġy Ġcoordinates ĊĠĠĠĠ Ġ* Ġperformed Ġwhen Ġestim ating Ġa Ġtransformation , Ġand Ġonly Ġtakes Ġinto Ġaccount ĊĠĠĠĠ Ġ* Ġthe Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ return Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġinverse Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Rotation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics ĊĠĠĠ Ġ): ĠRotation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġget Camera Display Orientation Degrees ( context , Ġcharacteristics ) ĊĠĠĠĠĠĠĠ Ġreturn ĠRotation 2 D ( Math . to Radians (- angle . toDouble ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= Ġto View Coordinates Rotation ( context , Ġcamera Id ) ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , Ġintr insic Parameters , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= Ġto View Coordinates Rotation ( context , Ġcharacteristics ) ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , Ġintr insic Parameters , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ== ĠCamera To Display Orientation . OR IENTATION _ UNKNOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . t Ġ= ĠMatrix . identity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject ive Transformation 2 D . HO M _ COORD S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject ive Transformation 2 D . HO M _ COORD S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= Ġconvert Orientation Enum To Rotation ( orientation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , Ġintr insic Parameters , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpx Ġ= Ġintr insic Parameters . horizontal Principal Point ĊĠĠĠĠĠĠĠ Ġval Ġpy Ġ= Ġintr insic Parameters . vertical Principal Point ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , ĠIn hom ogeneous Point 2 D ( px , Ġpy ), Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= Ġto View Coordinates Rotation ( context , Ġcamera Id ) ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , Ġpivot , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= Ġto View Coordinates Rotation ( context , Ġcharacteristics ) ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , Ġpivot , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ== ĠCamera To Display Orientation . OR IENTATION _ UNKNOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . t Ġ= ĠMatrix . identity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject ive Transformation 2 D . HO M _ COORD S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProject ive Transformation 2 D . HO M _ COORD S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= Ġconvert Orientation Enum To Rotation ( orientation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpx Ġ= Ġpivot . inh om X ĊĠĠĠĠĠĠĠ Ġval Ġpy Ġ= Ġpivot . inh om Y ĊĊĠĠĠĠĠĠĠ Ġ// ĠFirst Ġbring Ġpivot Ġpoint Ġto Ġorigin Ġof Ġcoordinates ĊĠĠĠĠĠĠĠ Ġ// ĠThen Ġrotate ĊĠĠĠĠĠĠĠ Ġ// ĠThen Ġapply Ġy Ġcoordinate Ġre versal ĊĠĠĠĠĠĠĠ Ġ// ĠAnd Ġfinally Ġundo Ġthe Ġfirst Ġstep ĊĊĠĠĠĠĠĠĠ Ġ// ĠT Ġ= ĠT t ^ - 1 Ġ* ĠTr Ġ* ĠR Ġ* ĠT t ĊĠĠĠĠĠĠĠ Ġval Ġtt Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġtt . set Translation (- px , Ġ- py ) ĊĠĠĠĠĠĠĠ Ġtt . normalize () ĊĊĠĠĠĠĠĠĠ Ġval Ġinv Tt Ġ= Ġtt . inverse And Return New () ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠProject ive Transformation 2 D ( rotation ) ĊĠĠĠĠĠĠĠ Ġval Ġtr Ġ= ĠProject ive Transformation 2 D ( reverse Y Coordinates Matrix ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠT t ^ - 1 Ġ* ĠTr ĊĠĠĠĠĠĠĠ Ġresult . t Ġ= Ġinv Tt . as Matrix () ĊĠĠĠĠĠĠĠ Ġresult . combine ( tr ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠT t ^ - 1 Ġ* ĠTr Ġ* ĠR ĊĠĠĠĠĠĠĠ Ġresult . combine ( r ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠT t ^ - 1 Ġ* ĠTr Ġ* ĠR Ġ* ĠT t ĊĠĠĠĠĠĠĠ Ġresult . combine ( tt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( context , Ġcamera Id , Ġintr insic Parameters , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristics , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintr insic Parameters , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( orientation , Ġintr insic Parameters , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation Ġor Ġthe Ġidentity Ġif Ġrotation Ġis Ġnull ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , Ġintr insic Parameters , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( context , Ġcamera Id , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( context , Ġcharacteristics , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( orientation , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠOpenGL ĊĠĠĠĠ Ġ* Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( context , Ġcamera Id , Ġintr insic Parameters , Ġresult ) ĊĠĠĠĠĠĠĠ Ġresult . inverse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristics , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintr insic Parameters , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġresult . inverse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( orientation , Ġintr insic Parameters , Ġresult ) ĊĠĠĠĠĠĠĠ Ġresult . inverse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , Ġintr insic Parameters , Ġresult ) ĊĠĠĠĠĠĠĠ Ġresult . inverse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( context , Ġcamera Id , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġresult . inverse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( context , Ġcharacteristics , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġresult . inverse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( orientation , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġresult . inverse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġcomputed Ġtransformation Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġresult : ĠProject ive Transformation 2 D ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( rotation , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġresult . inverse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Transformation ( context , Ġcamera Id , Ġintr insic Parameters , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristics , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintr insic Parameters , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Transformation ( orientation , Ġintr insic Parameters , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġintr insic Parameters Ġcamera Ġintr insic Ġparameters . ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation Ġor Ġthe Ġidentity Ġif Ġrotation Ġis Ġnull ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġintr insic Parameters : ĠPin hole Camera Intr insic Parameters ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Transformation ( rotation , Ġintr insic Parameters , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Transformation ( context , Ġcamera Id , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Transformation ( context , Ġcharacteristics , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Transformation ( orientation , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġ 2 D Ġtransformation Ġto Ġconvert Ġ 2 D Ġpoint Ġcoordinates Ġfrom ĠAndroid ĊĠĠĠĠ Ġ* Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation ĊĠĠĠĠ Ġ* Ġ@ return Ġ 2 D Ġtransformation Ġor Ġthe Ġidentity Ġif Ġrotation Ġis Ġnull . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Transformation ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D ĊĠĠĠ Ġ): ĠProject ive Transformation 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠProject ive Transformation 2 D () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Transformation ( rotation , Ġpivot , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintr insic Ġ= ĠCamera To Open Gl Helper . intrinsic Parameters From Camera ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġto View Coordinates Transformation ( context , Ġcamera Id , Ġintr insic ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintr insic Ġ= ĠCamera To Open Gl Helper . intrinsic Parameters From Camera ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto View Coordinates Transformation ( context , Ġcharacteristics , Ġintr insic ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintr insic Ġ= ĠCamera To Open Gl Helper . intrinsic Parameters From Camera ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġto View Coordinates Transformation ( orientation , Ġintr insic ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintr insic Ġ= ĠCamera To Open Gl Helper . intrinsic Parameters From Camera ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġto View Coordinates Transformation ( rotation , Ġintr insic ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġto View Coordinates Transformation ( context , Ġcamera Id , Ġpivot ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġto View Coordinates Transformation ( context , Ġcharacteristics , Ġpivot ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġto View Coordinates Transformation ( orientation , Ġpivot ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġto View Coordinates Transformation ( rotation , Ġpivot ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Camera ( context , Ġcamera Id , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Camera ( context , Ġcharacteristics , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Camera ( orientation , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Camera ( rotation , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Camera ( context , Ġcamera Id , Ġpivot , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Camera ( context , Ġcharacteristics , Ġpivot , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Camera ( orientation , Ġpivot , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġto View Coordinates Camera ( rotation , Ġpivot , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintr insic Ġ= ĠCamera To Open Gl Helper . intrinsic Parameters From Camera ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġfrom View Coordinates Transformation ( context , Ġcamera Id , Ġintr insic ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintr insic Ġ= ĠCamera To Open Gl Helper . intrinsic Parameters From Camera ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom View Coordinates Transformation ( context , Ġcharacteristics , Ġintr insic ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintr insic Ġ= ĠCamera To Open Gl Helper . intrinsic Parameters From Camera ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġfrom View Coordinates Transformation ( orientation , Ġintr insic ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintr insic Ġ= ĠCamera To Open Gl Helper . intrinsic Parameters From Camera ( input ) ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġfrom View Coordinates Transformation ( rotation , Ġintr insic ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġfrom View Coordinates Transformation ( context , Ġcamera Id , Ġpivot ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġfrom View Coordinates Transformation ( context , Ġcharacteristics , Ġpivot ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġfrom View Coordinates Transformation ( orientation , Ġpivot ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransformation Ġ= Ġfrom View Coordinates Transformation ( rotation , Ġpivot ) ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Camera ( context , Ġcamera Id , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Camera ( context , Ġcharacteristics , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Camera ( orientation , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Camera ( rotation , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcamera Id ĠA Ġcamera Ġid . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcamera Id : ĠString , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Camera ( context , Ġcamera Id , Ġpivot , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġtakes Ġinto Ġaccount Ġcurrent Ġdisplay Ġand Ġcamera Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠAndroid Ġcontext . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristics ĠInformation Ġabout Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcharacteristics : ĠCamera Character istics , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Camera ( context , Ġcharacteristics , Ġpivot , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation , ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Camera ( orientation , Ġpivot , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġcamera Ġfrom ĠAndroid Ġview Ġcoordinates Ġto ĠOpenGL Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġmust Ġbe Ġnoticed Ġthat ĠOpenGL Ġuses Ġa Ġright Ġh anded Ġcoordinate Ġsystem Ġwhere ĊĠĠĠĠ Ġ* Ġy Ġcoordinates Ġincrease Ġup wards , Ġwhereas ĠAndroid Ġuses Ġy Ġcoordinates Ġthat ĊĠĠĠĠ Ġ* Ġincrease Ġdown wards Ġand Ġtakes Ġinto Ġaccount Ġscreen Ġand Ġcamera Ġsensor Ġorientation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġrotation Ġcounter - clock wise Ġrotation Ġindicating Ġthe Ġamount Ġof Ġdisplay ĊĠĠĠĠ Ġ* Ġrotation Ġrespect Ġthe Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġpivot Ġpoint Ġto Ġuse Ġas Ġpivot Ġfor Ġrotation . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom View Coordinates Camera ( ĊĠĠĠĠĠĠĠ Ġrotation : ĠRotation 2 D ?, ĊĠĠĠĠĠĠĠ Ġpivot : ĠPoint 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġfrom View Coordinates Camera ( rotation , Ġpivot , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTrans forms Ġcamera Ġusing Ġprovided Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtransformation Ġ 2 D Ġtransformation Ġto Ġapply Ġto Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ param Ġresult Ġinstance Ġwhere Ġtransformed Ġcamera Ġwill Ġbe Ġstored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtransform Camera ( ĊĠĠĠĠĠĠĠ Ġtransformation : ĠProject ive Transformation 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera , ĊĠĠĠĠĠĠĠ Ġresult : ĠPin hole Camera ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransformation . normalize () ĊĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġtransformation . t ĊĊĠĠĠĠĠĠĠ Ġinput . normalize () ĊĠĠĠĠĠĠĠ Ġinput . fix Camera Sign () ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġinput . internal Matrix ĊĊĠĠĠĠĠĠĠ Ġresult . internal Matrix Ġ= Ġt . multiply And Return New ( p ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTrans forms Ġcamera Ġusing Ġprovided Ġ 2 D Ġtransformation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtransformation Ġ 2 D Ġtransformation Ġto Ġapply Ġto Ġthe Ġcamera . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġcamera Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ@ return Ġtransformed Ġcamera . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtransform Camera ( ĊĠĠĠĠĠĠĠ Ġtransformation : ĠProject ive Transformation 2 D , ĊĠĠĠĠĠĠĠ Ġinput : ĠPin hole Camera ĊĠĠĠ Ġ): ĠPin hole Camera Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠPin hole Camera () ĊĠĠĠĠĠĠĠ Ġtransform Camera ( transformation , Ġinput , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġprovided Ġclock wise Ġorientation Ġexpressed Ġin Ġdegrees Ġto Ġthe ĊĠĠĠĠ Ġ* Ġcorresponding Ġ[ Camera To Display Orientation ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdegrees Ġclock wise Ġorientation Ġexpressed Ġin Ġdegrees . ĊĠĠĠĠ Ġ* Ġ@ return Ġconverted Ġresult ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġconvert Orientation Degrees To Enum ( degrees : ĠInt ): ĠCamera To Display Orientation Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( degrees ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOR IENTATION _ 0 _ DE GRE ES Ġ-> ĠCamera To Display Orientation . OR IENTATION _ 0 _ DE GRE ES ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOR IENTATION _ 9 0 _ DE GRE ES Ġ-> ĠCamera To Display Orientation . OR IENTATION _ 9 0 _ DE GRE ES ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOR IENTATION _ 1 8 0 _ DE GRE ES Ġ-> ĠCamera To Display Orientation . OR IENTATION _ 1 8 0 _ DE GRE ES ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOR IENTATION _ 2 7 0 _ DE GRE ES Ġ-> ĠCamera To Display Orientation . OR IENTATION _ 2 7 0 _ DE GRE ES ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠCamera To Display Orientation . OR IENTATION _ UNKNOWN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġprovided Ġorientation Ġto Ġamount Ġof Ġclock wise Ġrotation Ġexpressed Ġin Ġradians . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored . ĊĠĠĠĠ Ġ* Ġ@ return Ġamount Ġof Ġclock wise Ġrotation Ġexpressed Ġin Ġradians Ġor Ġnull Ġif Ġorientation Ġis Ġunknown . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġconvert Orientation Enum To Radians ( orientation : ĠCamera To Display Orientation ): ĠDouble ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( orientation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera To Display Orientation . OR IENTATION _ 0 _ DE GRE ES Ġ-> Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera To Display Orientation . OR IENTATION _ 9 0 _ DE GRE ES Ġ-> Ġ 0 . 5 Ġ* ĠMath . PI ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera To Display Orientation . OR IENTATION _ 1 8 0 _ DE GRE ES Ġ-> ĠMath . PI ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera To Display Orientation . OR IENTATION _ 2 7 0 _ DE GRE ES Ġ-> Ġ 1 . 5 Ġ* ĠMath . PI ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera To Display Orientation . OR IENTATION _ UNKNOWN Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġprovided Ġorientation Ġinto Ġa Ġ 2 D Ġrotation Ġrepresenting Ġrequired ĊĠĠĠĠ Ġ* Ġrotation Ġto Ġgo Ġfrom ĠOpenGL Ġcoordinates Ġto ĠAndroid Ġview Ġcoordinates . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġorientation Ġamount Ġof Ġrotation Ġbetween Ġdisplay Ġand Ġcamera Ġsensor . ĊĠĠĠĠ Ġ* Ġ[ Camera To Display Orientation . OR IENTATION _ UNKNOWN ] Ġindicates Ġthat Ġorientation Ġis Ġunknown Ġand ĊĠĠĠĠ Ġ* Ġmust Ġbe Ġignored Ġ( Y Ġcoordinates Ġare Ġnot Ġreversed Ġeither ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġconvert Orientation Enum To Rotation ( ĊĠĠĠĠĠĠĠ Ġorientation : ĠCamera To Display Orientation ĊĠĠĠ Ġ): ĠRotation 2 D ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġconvert Orientation Enum To Radians ( orientation ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( angle Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRotation 2 D ( angle ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ 2 D Ġtransformation Ġmatrix Ġto Ġreverse ĠY Ġcoordinates . ĊĠĠĠĠ Ġ* ĠThis Ġis Ġdone Ġto Ġconvert Ġfrom Ġthe Ġright Ġh anded Ġcoordinate Ġsystem Ġprovided Ġby ĊĠĠĠĠ Ġ* ĠOpenGL , Ġwhere Ġy Ġcoordinates Ġincrease Ġup wards , Ġto Ġthe Ġview Ġcoordinates ĊĠĠĠĠ Ġ* Ġsystem Ġprovided Ġby ĠAndroid Ġwhere Ġy Ġcoordinates Ġincrease Ġdown wards . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġmatrix Ġcontaining Ġ 2 D Ġtransformation Ġto Ġreverse ĠY Ġcoordinates . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġreverse Y Coordinates Matrix (): ĠMatrix Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġreverse Ġtransformation Ġhas Ġthe Ġfollowing Ġexpression : ĊĠĠĠĠĠĠĠ Ġ// ĠTr Ġ= Ġ[ 1 ĠĠ 0 ĠĠĠ 0 ] ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠ Ġ[ 0 Ġ Ġ- 1 ĠĠ 0 ] ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠ Ġ[ 0 ĠĠ 0 ĠĠĠ 1 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMatrix . identity ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProject ive Transformation 2 D . HO M _ COORD S , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProject ive Transformation 2 D . HO M _ COORD S ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġresult . set ElementAt ( 1 , Ġ 1 , Ġ- 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }