PDA

View Full Version : [c++]Coordinate geografiche


okay
20-10-2006, 09:54
Sto calcolando gradi primi e secondi di latitudine e longitudine.

qualcuno sà 90° a quanti minuti corrispondono? e a quanti secondi?

in pratica o i gradi sulla sfera in longitudine e latitudine.

tipo Lat 90°... devo aggiungere i primi e i secondi tipo:
Lat 90° primi' secondi''
Lon 47° primi' secodi''

avendo solo i gradi come riferimento come è il calcolo per calcolare i primi e i secondi?

lovaz
20-10-2006, 09:57
Direi
gradi * 60
gradi * 3600

okay
20-10-2006, 10:37
Direi
gradi * 60
gradi * 3600

ok... mi sono tolto il dubbio.

ora il calcolo

okay
20-10-2006, 10:52
dunque il calcolo:

LonHaut sono i gradi e sono in 0.2 float in avanti o indietro

Lop=(fabs(LonHaut)-(int)fabs(LonHaut))*60;
così sopra per i primi è ok

Los=(fabs(Lop)-(int)fabs(Lop))*3600;
mentre per i secondi non mi torna il conto...

lovaz
20-10-2006, 10:58
Scusa, sono stato precipitoso...

trovi la parte decimale dei gradi, fai *60, trovi i minuti (parte intera).
trovi la parte decimale dei minuti, fai *60, trovi i secondi (parte intera + eventuali decimali).

okay
20-10-2006, 11:07
Scusa, sono stato precipitoso...

trovi la parte decimale dei gradi, fai *60, trovi i minuti (parte intera).
trovi la parte decimale dei minuti, fai *60, trovi i secondi (parte intera + eventuali decimali).

io calcolo gradi primi e secondi. non ho capito:

"...trovi la parte decimale dei minuti..."

io faccio così:

Lop=(fabs(LonHaut)-(int)fabs(LonHaut))*60;
//questa sopra è corretto per i minuti
Los=fabs(Lop*0.6);
//questa sopra non mi convince per i secondi

lovaz
20-10-2006, 11:16
Ma fabs non trova il valore assoluto?

Io dicevo di usare trunc per trovare la parte intera (senza i decimali).
per trovare la parte decimale fai num - trunc(num), a meno che non
ci sia una funzione che lo fa gia'.

okay
20-10-2006, 11:49
Ma fabs non trova il valore assoluto?

Io dicevo di usare trunc per trovare la parte intera (senza i decimali).
per trovare la parte decimale fai num - trunc(num), a meno che non
ci sia una funzione che lo fa gia'.

dunque cosa è trunc?

parliamo di codice c/c++ oppure va bene anche il vb... ok?

Lop=(fabs(LonHaut)-(int)fabs(LonHaut))*60;
//questa sopra è corretto per i minuti
Los=fabs(Lop*0.6);
//questa sopra non mi convince per i secondi

diciamo che:
LonHaut è un float (i gradi) se vale 0.0 ogni incremento fa si che LonHaut sia = 0.2 un decremento sia = 0.2

Lop sono in minuti e come puoi vedere lo moltiplico per 0.6 ho provato a moltiplicarlo per 60 ma il risultato dei secondi non mi quadra...

fabs() in c++ fà che se un numero è negativo lo mette in positivo.

okay
20-10-2006, 15:44
Ecco così è ok:

Lop=(fabs(LonHaut)-(int)fabs(LonHaut))*60;
Los=(fabs(Lop)-(int)fabs(Lop))*60;