我有一組二維網格點(X,Y)的/項目到球爲3D點(x,y,z)。如何地圖2D網格點(X,Y)到球面的,我要地圖的三維點(X,Y,Z)
我知道會有向兩極一些扭曲的ABS(Y)增加,但我的網格補片將只包括在赤道附近的球如此嚴重扭曲將避免的一部分。
我無法找到的,正確的方程。
我有一組二維網格點(X,Y)的/項目到球爲3D點(x,y,z)。如何地圖2D網格點(X,Y)到球面的,我要地圖的三維點(X,Y,Z)
我知道會有向兩極一些扭曲的ABS(Y)增加,但我的網格補片將只包括在赤道附近的球如此嚴重扭曲將避免的一部分。
我無法找到的,正確的方程。
從墨卡託投影維基百科的文章轉述:
Given a "mapping sphere" of radius R,
the Mercator projection (x,y) of a given latitude and longitude is:
x = R * longitude
y = R * log(tan((latitude + pi/2)/2))
and the inverse mapping of a given map location (x,y) is:
longitude = x/R
latitude = 2 * atan(exp(y/R)) - pi/2
要想從逆映射的結果,3D座標:
Given longitude and latitude on a sphere of radius S,
the 3D coordinates P = (P.x, P.y, P.z) are:
P.x = S * cos(latitude) * cos(longitude)
P.y = S * cos(latitude) * sin(longitude)
P.z = S * sin(latitude)
(請注意,「地圖半徑「和」3D半徑「幾乎肯定會有不同的值,所以我使用了不同的變量名稱。)
我的緯度是29.65163。當我嘗試計算y值時,由於'tan((緯度+ pi/2)/ 2)'爲-0.0970531183,因此執行日誌時會出現「數學域錯誤「因爲價值是負面的。我究竟做錯了什麼? – Pikamander2
在添加「pi/2」之前,您需要將緯度從度數轉換爲弧度。這會將+/- 90度範圍轉換爲+/- +/- pi/2弧度範圍,除非你在極點上(這種情況下墨卡託投影是單數的),否則這個範圍不會溢出函數範圍。 ..) – comingstorm
我希望,你可以使用任何一種地球投影的倒數。相對於其他預測
墨卡託是在赤道附近還不錯。
公式在wiki頁面上。
http://en.wikipedia.org/wiki/Mercator_projection
謝謝。我意識到這是我想要的,但我無法推導出在球體上的2D點(x,y)到3d點(x,y,z)的方程。 – milkplus
啊,實際的公式。這是一個不平凡的數學運算,你可能在http://math.stackexchange.com/上運氣更好。一旦你得到公式,你可以回到這裏尋求編程幫助。 此外,http://wiki.openstreetmap.org/wiki/Mercator – kreativitea
我想你球體上的(x,y)是緯度,經度。
如果是這樣,請參閱http://tutorial.math.lamar.edu/Classes/CalcII/SphericalCoords.aspx。
有:
披= 90度 - 北緯
THETA =經度
RHO =你的球的半徑。
我不確定你在這裏問什麼...... 2D'x'和'y'代表什麼?它們是緯度還是經度,還是球面的某些平面矩形投影上的座標?在最後一種情況下,您使用的是什麼投影? –