/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 - 2 0 1 9 . Ġdata 2 viz Ġs Ãł rl . Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ġio . data 2 viz . geo . projection ĊĊ Ċ import Ġio . data 2 viz . geo . geojson . path . Geo Circle Ċ import Ġio . data 2 viz . test . TestBase Ċ import Ġkotlin . test . Test Ċ Ċ class ĠCircle Tests Ġ: ĠTest Base () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgeo Circle _ gener ates _ a _ polygon () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcircle Ġ= ĠGeo Circle < Int >(). circle () ĊĠĠĠĠĠĠĠ Ġval Ġcoords Ġ= Ġcircle . coordinates [ 0 ] ĊĊĠĠĠĠĠĠĠ Ġcoords [ 0 ] ĠshouldBe Close ĠarrayOf (- 7 8 . 6 9 0 0 6 7 , Ġ- 9 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 8 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 7 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 7 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 6 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 6 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 6 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 5 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 7 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 4 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 8 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 4 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 9 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 3 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 0 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 3 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 1 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 2 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 2 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 1 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 3 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 1 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 4 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ- 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 5 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 6 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 7 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 1 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 8 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 1 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 1 9 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 2 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 0 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 3 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 1 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 3 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 2 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 4 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 3 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 4 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 4 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 5 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 5 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 6 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 6 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 6 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 7 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 7 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 8 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 7 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 2 9 ] ĠshouldBe Close ĠarrayOf (- 9 0 . 0 , Ġ 8 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 0 ] ĠshouldBe Close ĠarrayOf (- 8 9 . 5 9 6 6 5 8 8 , Ġ 9 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 1 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 8 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 2 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 7 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 3 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 7 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 4 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 6 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 5 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 6 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 6 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 5 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 7 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 4 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 8 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 4 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 3 9 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 3 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 0 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 3 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 1 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 2 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 2 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 1 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 3 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 1 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 4 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 5 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 6 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 7 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 1 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 8 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 1 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 4 9 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 2 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 0 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 3 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 1 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 3 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 2 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 4 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 3 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 4 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 4 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 5 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 5 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 6 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 6 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 6 6 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 7 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 7 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 8 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 7 8 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 5 9 ] ĠshouldBe Close ĠarrayOf ( 9 0 . 0 , Ġ- 8 4 . 0 ) ĊĠĠĠĠĠĠĠ Ġcoords [ 6 0 ] ĠshouldBe Close ĠarrayOf ( 8 9 . 5 6 9 7 6 8 3 , Ġ- 9 0 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgeo Circle _ center _ 0 _ 9 0 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgeo Circle Ġ= ĠGeo Circle < Int >() ĊĠĠĠĠĠĠĠ Ġgeo Circle . center Ġ= Ġ{ Ġdouble ArrayOf (. 0 , Ġ 9 0 . 0 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcircle Ġ= Ġgeo Circle . circle () ĊĠĠĠĠĠĠĠ Ġval Ġcoords Ġ= Ġcircle . coordinates [ 0 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġ( 3 6 0 Ġdown To Ġ 0 Ġstep Ġ 6 ). map Ġ{ ĠarrayOf ( if Ġ( it Ġ>= Ġ 1 8 0 ) Ġit . toDouble () Ġ- Ġ 3 6 0 Ġelse Ġit . toDouble (), Ġ. 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġmap . forEach Indexed Ġ{ Ġindex , Ġref Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref ĠshouldBe Close Ġcoords [ index ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgeo Circle _ center _ 4 5 _ 4 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgeo Circle Ġ= ĠGeo Circle < Int >() ĊĠĠĠĠĠĠĠ Ġgeo Circle . center Ġ= Ġ{ Ġdouble ArrayOf ( 4 5 . 0 , Ġ 4 5 . 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġgeo Circle . radius Ġ= Ġ{ Ġ. 0 Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcircle Ġ= Ġgeo Circle . circle () ĊĠĠĠĠĠĠĠ Ġcircle . coordinates [ 0 ][ 0 ] ĠshouldBe Close ĠarrayOf ( 4 5 . 0 , Ġ 4 5 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġgeo Circle _ first _ and _ last _ points _ are _ co incident () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgeo Circle Ġ= ĠGeo Circle < Int >() ĊĠĠĠĠĠĠĠ Ġgeo Circle . center Ġ= Ġ{ Ġdouble ArrayOf (. 0 , Ġ. 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġgeo Circle . radius Ġ= Ġ{ Ġ. 0 0 2 Ġ} ĊĠĠĠĠĠĠĠ Ġgeo Circle . precision Ġ= Ġ{ Ġ 4 5 . 0 Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcircle Ġ= Ġgeo Circle . circle () ĊĠĠĠĠĠĠĠ Ġval Ġcoords Ġ= Ġcircle . coordinates [ 0 ] ĊĠĠĠĠĠĠĠ Ġcoords [ 0 ] ĠshouldBe Close Ġcoords [ coords . last Index ] ĊĠĠĠ Ġ} Ċ }