View Full Version : [c++]Coordinate geografiche
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?
Direi
gradi * 60
gradi * 3600
Direi
gradi * 60
gradi * 3600
ok... mi sono tolto il dubbio.
ora il calcolo
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...
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).
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
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'.
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.
Ecco così è ok:
Lop=(fabs(LonHaut)-(int)fabs(LonHaut))*60;
Los=(fabs(Lop)-(int)fabs(Lop))*60;
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.