Guest
Fri Nov 13, 2009 4:10 pm
Czesc,
chcialbym za pomoca malego procka (pic, atmel itp) wyliczyc odleglosc
pomiedzy dwoma punktami otrzymanymi z odbiornika GPS.
1. wzory nie musza byc super dokladne i nie musza uwzgledniac np.
krzywizny Ziemi itp. poniewaz pary wspolrzednych sa oddalone od siebie
o kilka-kilkanascie-kilkadziesiat kilometrow. Ale jezeli zawezilibysmy
odleglosci do kilku kilometrow, to aby blad obliczen nie byl wiekszy
niz 50 m.
2. a moze sa jakies gotowe biblioteki do zlinkowania do kompilatora C
(w ktorym bylby ewentu. pisany sofcik)?
3. przeliczanie co kilka sekund pary wspolrzednych.
macie jakies pomysly?
MKi
Guest
Fri Nov 13, 2009 4:47 pm
mayonez@wp.pl pisze:
Quote:
Czesc,
chcialbym za pomoca malego procka (pic, atmel itp) wyliczyc odleglosc
pomiedzy dwoma punktami otrzymanymi z odbiornika GPS.
1. wzory nie musza byc super dokladne i nie musza uwzgledniac np.
krzywizny Ziemi itp. poniewaz pary wspolrzednych sa oddalone od siebie
o kilka-kilkanascie-kilkadziesiat kilometrow. Ale jezeli zawezilibysmy
odleglosci do kilku kilometrow, to aby blad obliczen nie byl wiekszy
niz 50 m.
2. a moze sa jakies gotowe biblioteki do zlinkowania do kompilatora C
(w ktorym bylby ewentu. pisany sofcik)?
3. przeliczanie co kilka sekund pary wspolrzednych.
macie jakies pomysly?
Kiedyś popełniłem programik, który między innymi
wyliczał to, o co Ci chodzi. Zastosowałem wzór
wygrzebany w sieci.
Programik jest w Delphi - jeśli Ci to nie przeszkadza,
oto funkcja:
//------------------------------------------------
// Oblicz odległość między dwoma punktami w poziomie
// StartP, EndP zawierają współrzędne GPS w stopniach * 1000000
function CalcDistance(StartP,EndP:TPoint) : double ;
var
a,b : double ;
begin
a := (StartP.Y-EndP.Y)*0.11112 ;
a := a * a ;
b := cos(StartP.Y/0.00005729746936)*0.11112*(StartP.X-EndP.X) ;
b := b * b ;
Result := Sqrt(a+b) ;
end ;
Wynik bodajże w metrach. Funkcja nie uwzględnia wysokości
obu pozycji - ale to można już bardzo łatwo uwzględnić
Dla moich potrzeb działało bardzo ładnie.
Myślę, że przepisanie tego w C i zaimplementowanie w dowolny
mikroprocesor nie powinno sprawić problemu.
Pozdrowienia,
MKi
J.F.
Guest
Fri Nov 13, 2009 9:14 pm
On Fri, 13 Nov 2009 16:10:13 +0100, mayonez@wp.pl wrote:
Quote:
chcialbym za pomoca malego procka (pic, atmel itp) wyliczyc odleglosc
pomiedzy dwoma punktami otrzymanymi z odbiornika GPS.
1. wzory nie musza byc super dokladne i nie musza uwzgledniac np.
krzywizny Ziemi itp. poniewaz pary wspolrzednych sa oddalone od siebie
o kilka-kilkanascie-kilkadziesiat kilometrow. Ale jezeli zawezilibysmy
odleglosci do kilku kilometrow, to aby blad obliczen nie byl wiekszy
niz 50 m.
No to zwykly Pitagoras sie chyba nada.
A jak chcesz dokladnie to
http://en.wikipedia.org/wiki/Haversine_formula
Quote:
2. a moze sa jakies gotowe biblioteki do zlinkowania do kompilatora C
(w ktorym bylby ewentu. pisany sofcik)?
cosinus i pierwiastek bedzie potrzebny.
J.