package Ġcom . k yle cor ry . sol . science . geo logy . projection s Ċ Ċ import Ġcom . k yle cor ry . sol . math . Sol Math . clamp Ċ import Ġcom . k yle cor ry . sol . math . Sol Math . cos Degrees Ċ import Ġcom . k yle cor ry . sol . math . Sol Math . to Degrees Ċ import Ġcom . k yle cor ry . sol . math . Sol Math . to Radians Ċ import Ġcom . k yle cor ry . sol . math . Vector 2 Ċ import Ġcom . k yle cor ry . sol . units . Coordinate Ċ Ċ class ĠC yl ind rical E quid istant Projection ( private Ġval Ġscale : ĠFloat Ġ= Ġ 1 f ) Ġ: ĠI Map Projection Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġto Coordinate ( pixel : ĠVector 2 ): ĠCoordinate Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlongitude Ġ= Ġ( pixel . x Ġ/ Ġscale ). toDouble (). to Degrees () ĊĠĠĠĠĠĠĠ Ġval Ġlatitude Ġ= Ġpixel . y . toDouble (). to Degrees () ĊĠĠĠĠĠĠĠ Ġreturn ĠCoordinate ( clamp ( latitude , Ġ- 1 8 0 . 0 , Ġ 1 8 0 . 0 ), Ġclamp ( longitude , Ġ- 9 0 . 0 , Ġ 9 0 . 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Pixels ( location : ĠCoordinate ): ĠVector 2 Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġlocation . longitude . to Radians () Ġ* Ġscale ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġlocation . latitude . to Radians () ĊĠĠĠĠĠĠĠ Ġreturn ĠVector 2 ( x . toFloat (), Ġy . toFloat ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Scale For Latitude ( latitude : ĠDouble ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcos Degrees ( latitude ). toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }