Created
December 10, 2020 19:17
-
-
Save zdavkeos/42541978d242bfd76606302e5fecb377 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Euler Spiral map projection | |
// For https://tmcw.github.io/projectityourself/ | |
let lon_look = [ | |
[-180, -89.33633981999999], | |
[-177, -80.661710898], | |
[-174, -73.825305678], | |
[-171, -70.20639653399999], | |
[-167.99999999999997, -70.475119848], | |
[-165, -74.51836227], | |
[-162.00000000000003, -81.525147768], | |
[-159, -90.192768336], | |
[-156, -98.99807815800001], | |
[-152.99999999999997, -106.47557963999999], | |
[-150, -111.452716044], | |
[-147.00000000000003, -113.208958206], | |
[-144, -111.54419368199999], | |
[-141, -106.759551636], | |
[-137.99999999999997, -99.56729546999999], | |
[-135, -90.954400824], | |
[-132.00000000000003, -82.026830178], | |
[-129, -73.859223384], | |
[-126, -67.369204692], | |
[-122.99999999999999, -63.22838022], | |
[-120, -61.814822111999995], | |
[-117, -63.205511867999995], | |
[-114, -67.202517204], | |
[-111, -73.38385639799999], | |
[-108, -81.168978474], | |
[-105, -89.889241428], | |
[-102, -98.85526925399999], | |
[-99, -107.41515921], | |
[-96, -114.99978303], | |
[-93, -121.153563018], | |
[-90, -125.550892818], | |
[-87, -127.999702332], | |
[-83.99999999999999, -128.434513914], | |
[-81.00000000000001, -126.901737774], | |
[-78, -123.53999138999998], | |
[-75, -118.557992088], | |
[-72, -112.21216533], | |
[-68.99999999999999, -104.785618572], | |
[-66.00000000000001, -96.569623998], | |
[-63, -87.848283276], | |
[-60, -78.886646532], | |
[-57, -69.922241568], | |
[-54, -61.159741992], | |
[-51, -52.76835702], | |
[-48, -44.881450758], | |
[-45, -37.597880016], | |
[-41.99999999999999, -30.984562422000003], | |
[-39, -25.07983587], | |
[-36, -19.897237332], | |
[-33.00000000000001, -15.4293997194], | |
[-30, -11.6518379148], | |
[-27, -8.5264599978], | |
[-24, -6.0046978788], | |
[-20.999999999999996, -4.0301990514], | |
[-18, -2.5410596418], | |
[-15, -1.4716080424800002], | |
[-12, -0.7537696491600001], | |
[-9, -0.31805787672], | |
[-6, -0.09424611856800001], | |
[-3, -0.0117809594748], | |
[0, 0], | |
[3, 0.0117809594748], | |
[6, 0.09424611856800001], | |
[9, 0.31805787672], | |
[12, 0.7537696491600001], | |
[15, 1.4716080424800002], | |
[18, 2.5410596418], | |
[20.999999999999996, 4.0301990514], | |
[24, 6.0046978788], | |
[27, 8.5264599978], | |
[30, 11.6518379148], | |
[33.00000000000001, 15.4293997194], | |
[36, 19.897237332], | |
[39, 25.07983587], | |
[41.99999999999999, 30.984562422000003], | |
[45, 37.597880016], | |
[48, 44.881450758], | |
[51, 52.76835702], | |
[54, 61.159741992], | |
[57, 69.922241568], | |
[60, 78.886646532], | |
[63, 87.848283276], | |
[66.00000000000001, 96.569623998], | |
[68.99999999999999, 104.785618572], | |
[72, 112.21216533], | |
[75, 118.557992088], | |
[78, 123.53999138999998], | |
[81.00000000000001, 126.901737774], | |
[83.99999999999999, 128.434513914], | |
[87, 127.999702332], | |
[90, 125.550892818], | |
[93, 121.153563018], | |
[96, 114.99978303], | |
[99, 107.41515921], | |
[102, 98.85526925399999], | |
[105, 89.889241428], | |
[108, 81.168978474], | |
[111, 73.38385639799999], | |
[114, 67.202517204], | |
[117, 63.205511867999995], | |
[120, 61.814822111999995], | |
[122.99999999999999, 63.22838022], | |
[126, 67.369204692], | |
[129, 73.859223384], | |
[132.00000000000003, 82.026830178], | |
[135, 90.954400824], | |
[137.99999999999997, 99.56729546999999], | |
[141, 106.759551636], | |
[144, 111.54419368199999], | |
[147.00000000000003, 113.208958206], | |
[150, 111.452716044], | |
[152.99999999999997, 106.47557963999999], | |
[156, 98.99807815800001], | |
[159, 90.192768336], | |
[162.00000000000003, 81.525147768], | |
[165, 74.51836227], | |
[167.99999999999997, 70.475119848], | |
[171, 70.20639653399999], | |
[174, 73.825305678], | |
[177, 80.661710898], | |
[180, 89.33633981999999], | |
]; | |
let lat_look = [ | |
[-90, -54.514871037], | |
[-88.5, -53.479565874], | |
[-87, -50.613880518], | |
[-85.5, -46.535394951], | |
[-83.99999999999999, -42.074248653], | |
[-82.5, -38.093741666999996], | |
[-81.00000000000001, -35.324457291], | |
[-79.5, -34.241917176], | |
[-78, -35.004374658], | |
[-76.49999999999999, -37.45328472], | |
[-75, -41.167170864], | |
[-73.50000000000001, -45.55181772899999], | |
[-72, -49.946526522], | |
[-70.5, -53.727138161999996], | |
[-68.99999999999999, -56.390553882000006], | |
[-67.5, -57.611178890999994], | |
[-66.00000000000001, -57.265744041], | |
[-64.5, -55.428261534], | |
[-63, -52.34077215000001], | |
[-61.49999999999999, -48.367769499], | |
[-60, -43.942806549000004], | |
[-58.5, -39.515098104], | |
[-57, -35.502348141], | |
[-55.5, -32.253994575], | |
[-54, -30.026963448], | |
[-52.5, -28.974154158], | |
[-51, -29.14441884], | |
[-49.5, -30.491831016000003], | |
[-48, -32.891551506], | |
[-46.5, -36.159527943], | |
[-45, -40.073505839999996], | |
[-43.5, -44.393275035], | |
[-41.99999999999999, -48.878620515], | |
[-40.50000000000001, -53.304007419], | |
[-39, -57.469540923000004], | |
[-37.5, -61.208166699], | |
[-36, -64.389395061], | |
[-34.49999999999999, -66.920042943], | |
[-33.00000000000001, -68.74259994], | |
[-31.5, -69.831856935], | |
[-30, -70.190406036], | |
[-28.5, -69.843550815], | |
[-27, -68.834071908], | |
[-25.5, -67.217190876], | |
[-24, -65.05597547100001], | |
[-22.5, -62.417339172], | |
[-20.999999999999996, -59.36871167100001], | |
[-19.5, -55.975396851], | |
[-18, -52.29859023], | |
[-16.500000000000004, -48.39399774899999], | |
[-15, -44.310980330999996], | |
[-13.5, -40.092140583], | |
[-12, -35.773268328], | |
[-10.499999999999998, -31.383566478], | |
[-9, -26.946087848999998], | |
[-7.5, -22.478323535999998], | |
[-6, -17.992895184], | |
[-4.5, -13.498313787], | |
[-3, -8.9997779367], | |
[-1.5, -4.4999930600999996], | |
[0, 0], | |
[1.5, 4.4999930600999996], | |
[3, 8.9997779367], | |
[4.5, 13.498313787], | |
[6, 17.992895184], | |
[7.5, 22.478323535999998], | |
[9, 26.946087848999998], | |
[10.499999999999998, 31.383566478], | |
[12, 35.773268328], | |
[13.5, 40.092140583], | |
[15, 44.310980330999996], | |
[16.500000000000004, 48.39399774899999], | |
[18, 52.29859023], | |
[19.5, 55.975396851], | |
[20.999999999999996, 59.36871167100001], | |
[22.5, 62.417339172], | |
[24, 65.05597547100001], | |
[25.5, 67.217190876], | |
[27, 68.834071908], | |
[28.5, 69.843550815], | |
[30, 70.190406036], | |
[31.5, 69.831856935], | |
[33.00000000000001, 68.74259994], | |
[34.49999999999999, 66.920042943], | |
[36, 64.389395061], | |
[37.5, 61.208166699], | |
[39, 57.469540923000004], | |
[40.50000000000001, 53.304007419], | |
[41.99999999999999, 48.878620515], | |
[43.5, 44.393275035], | |
[45, 40.073505839999996], | |
[46.5, 36.159527943], | |
[48, 32.891551506], | |
[49.5, 30.491831016000003], | |
[51, 29.14441884], | |
[52.5, 28.974154158], | |
[54, 30.026963448], | |
[55.5, 32.253994575], | |
[57, 35.502348141], | |
[58.5, 39.515098104], | |
[60, 43.942806549000004], | |
[61.49999999999999, 48.367769499], | |
[63, 52.34077215000001], | |
[64.5, 55.428261534], | |
[66.00000000000001, 57.265744041], | |
[67.5, 57.611178890999994], | |
[68.99999999999999, 56.390553882000006], | |
[70.5, 53.727138161999996], | |
[72, 49.946526522], | |
[73.50000000000001, 45.55181772899999], | |
[75, 41.167170864], | |
[76.49999999999999, 37.45328472], | |
[78, 35.004374658], | |
[79.5, 34.241917176], | |
[81.00000000000001, 35.324457291], | |
[82.5, 38.093741666999996], | |
[83.99999999999999, 42.074248653], | |
[85.5, 46.535394951], | |
[87, 50.613880518], | |
[88.5, 53.479565874], | |
[90, 54.514871037], | |
]; | |
function project(x, y) { | |
let xx = 0; | |
let yy = 0; | |
for (let i = 0; i < lon_look.length; i++) { | |
if (i == lon_look.length-1) { | |
xx = lon_look[i][1]; | |
break; | |
} | |
if (lon_look[i][0] <= x && lat_look[i+1][0] >= x) { | |
xx = (lon_look[i][1] + lon_look[i+1][1]) / 2.0; | |
break; | |
} | |
} | |
for (let i = 0; i < lat_look.length; i++) { | |
if (i == lat_look.length-1) { | |
yy = lat_look[i][1]; | |
break; | |
} | |
if (lat_look[i][0] <= x && lat_look[i+1][0] >= x) { | |
yy = (lat_look[i][1] + lat_look[i+1][1]) / 2.0; | |
break; | |
} | |
} | |
return [xx, yy]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment