|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
[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? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Direi
gradi * 60 gradi * 3600
__________________
|Java Base| |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
ora il calcolo |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
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... |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
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).
__________________
|Java Base| |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
"...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 |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
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'.
__________________
|Java Base| |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Quote:
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. |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
Ecco così è ok:
Lop=(fabs(LonHaut)-(int)fabs(LonHaut))*60; Los=(fabs(Lop)-(int)fabs(Lop))*60; |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:01.











|








