Konwertuj szerokość i długość geograficzną, aby wskazać przestrzeń 3D
Muszę przekonwertować wartości szerokości i długości geograficznej na punkt w przestrzeni trójwymiarowej. Próbuję tego od około 2 godzin, ale nie uzyskuję poprawnych wyników.
TheRównoboczny współrzędne pochodzą zopenflights.org. Próbowałem kilku kombinacjisałata igrzech, ale rezultat nigdy nie przypominał naszej ukochanej ziemi.
Poniżej możesz zobaczyć wynik zastosowania konwersjiWikipedia wskazuje. Myślę, że można odgadnąć z kontekstu, coc4d.Vector
jest.
<code>def llarToWorld(latit, longit, altid, rad): x = math.sin(longit) * math.cos(latit) z = math.sin(longit) * math.sin(latit) y = math.cos(longit) v = c4d.Vector(x, y, z) v = v * altid + v * rad return v </code>
Czerwony: X, Zielony: Y, Niebieski: Z
Można rzeczywiście zidentyfikować Amerykę Północną i Południową, zwłaszcza ziemię wokół Zatoki Meksykańskiej. Wygląda to jednak trochę zgniecione i jakby w złym miejscu ..
Ponieważ wynik wygląda nieco obrócony, myślę, że próbowałem zamienić szerokość i długość geograficzną. Ale ten wynik jest nieco niezręczny.
<code>def llarToWorld(latit, longit, altid, rad): temp = latit latit = longit longit = temp x = math.sin(longit) * math.cos(latit) z = math.sin(longit) * math.sin(latit) y = math.cos(longit) v = c4d.Vector(x, y, z) v = v * altid + v * rad return v </code>
Tak wygląda wynik bez konwersji wartości.
<code>def llarToWorld(latit, longit, altid, rad): return c4d.Vector(math.degrees(latit), math.degrees(longit), altid) </code>
Pytanie: Jak poprawnie przekonwertować długość i szerokość geograficzną?
RozwiązanieDzięki TreyA znalazłemto strona na mathworks.com. Kod, który działa, jest następujący:
<code>def llarToWorld(lat, lon, alt, rad): # see: http://www.mathworks.de/help/toolbox/aeroblks/llatoecefposition.html f = 0 # flattening ls = atan((1 - f)**2 * tan(lat)) # lambda x = rad * cos(ls) * cos(lon) + alt * cos(lat) * cos(lon) y = rad * cos(ls) * sin(lon) + alt * cos(lat) * sin(lon) z = rad * sin(ls) + alt * sin(lat) return c4d.Vector(x, y, z) </code>
Właściwie to zmieniłemy
iz
ponieważ ziemia została wtedy obrócona, to działa! To jest wynik: