[GPS] Jak to rozgryźć ?

Obiekty i przekształcenia geometryczne, opisane za pomocą układu (nie zawsze prostokątnego) współrzędnych.
czasowstrzymywacz
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 18 paź 2010, o 20:31
Płeć: Mężczyzna
Lokalizacja: Warszawa

[GPS] Jak to rozgryźć ?

Post autor: czasowstrzymywacz »

Piszę pewien program do szkoły i został mi ostatni element, z którym nie mogę sobie poradzić. Kłopot oczywiście jest we mnie i w mojej niewiedzy z podstaw geometrii - a teraz przejdę do problemu.

Zacznę od tego, że mamy do dyspozycji 2 punkty (punkty o współrzędnych z google maps)

np. Wrocław
p1.X = 17.0068359375
p1.Y = 51.08282186160976

i np. Warszawa
p2.X = 21.005859375
p2.Y = 52.25470880113083


Tak naprawdę chcę, aby można było podstawić różne współrzędne. Czasami odległości będą duże, tak jak w tym przypadku czyli Wrocław - Warszawa, a czasami bardzo małe (powiedzmy ok 100m).

Potrzebuję "te" współrzędne zapisać na BitMapie, o wymiarach Y = 300 pikseli, Y = 300 pikseli zakładając również , że na BitMapie w punkcie X=150, Y=150 (środek) będą zapisane współrzędne P1. Chcę uzyskać "ala kompas". Dla zobrazowania :


Uploaded with

Dodam również, że posiadam wzór na obliczanie odległości między dwoma punktami na podstawie współrzędnych. Wynik zwracany jest w metrach

Tak jak napisałem, nie wiem za bardzo jak za to się zabrać. Na początku myślałem, nad zwykłym przeskalowaniem jednostek, lecz też nie wiem za bardzo jak to zrobić. Mamy podany P1 i P2, mamy również odległość w M (wzór - patrz wyżej). Nie wiem tylko jak obliczyć długość w metrach danego punktu, aby to ładnie przeskalować. Czy można byłoby najpierw obliczyć odległość między (0,0) (x = 0 = południk Greenwich, y = 0 = równik), a P1. Otrzymalibyśmy przeciwprostokątną, następnie liczymy przyprostokątną między(x = 0, y = 0), a (x = 0, y = P1.Y), później za pomocą Pitagorasa drugą przyprostokątna. Otrzymamy współrzędne P1.X i P1.Y wyrażone w M w stosunku do umownego 0,0 kuli ziemskiej. Następnie za pomocą tej samej metody można obliczyć P2.X i P2.Y w metrach, przesunąć wektor z 0,0 na P1 i zrobić przeskalowanie. Na początku sprawdzić czy większa jest różnica między P1.X a P2.X czy P1.Y a P2.Y. Większą różnicę oznaczamy jako 150 (połowa bitmapy) i za pomocą proporcji obliczamy odległość krótszej.

O ile w samej teorii nie ma błędów (mogę się mylić), to sama logika wg mnie jest do kitu. Dlaczego ? a no chociażby dlatego, że gdy P1 a P2 różni ok 200 m, to sam błąd z liczenia ogromnych odległości między 0,0 a współrzędnymi Wrocławia może być większy. Do tego wzór, który posiadam na obliczanie odległości między punktami, nie wiem czy uwzględnia np. krzywiznę kuli ziemskiej.

Proszę o pomoc, wskazówki itd.
ODPOWIEDZ