Buongiorno a tutti,
ho una classe scritta da me per effettuare dei calcoli di navigazione marittima in php.
il mio problema è che quando chiamo il metodo calcola_cammino_ortodromico della mia classe ottengo sempre 0 come risultato.
posto i codici:
Metodo calcola_cammino_ortodromico della classe Punto:
function calcola_cammino_ortodromico($puntoB){
// calcola e restituisce il cammino ortodromico calcolato mediante il teorema di eulero
// cos(cammino) = sen(latitudineA) * sen(latitudineB) + cos(latitudineA) cos(latitudineB) cos(differenzaLongitudine)
$cammino = new array();
$latitudineA = $this->get_latitudine();
$segnoLatitudineA = $latitudineA["segno"];
$latitudineA = $this->converti_gradi_in_radianti($latitudineA["valoreIntero"]);
$latitudineB = $puntoB->get_latitudine();
$segnoLatitudineB = $latitudineB["segno"];
$latitudineB =$this->converti_gradi_in_radianti($latitudineB["valoreIntero"]);
$differenzaLongitudineGradi = $this->get_differenza_di_longitudine($puntoB);
$differenzaLongitudine = $this->converti_gradi_in_radianti($differenzaLongitudineGradi["valore"]);
$passo1 = abs(sin($latitudineA) * sin($latitudineB));
$passo2 = abs(cos($latitudineA) * cos($latitudineB) * cos($differenzaLongitudine));
if ($segnoLatitudineA != $segnoLatitudineB) {
$passo1 = $passo1 * -1;
}
if ($differenzaLongitudineGradi > 90){
$passo2 = $passo2 * -1;
}
$cammino["passo1"] = $passo1;
$cammino["passo2"] = $passo2;
$cammino["cos"] = $passo1 + $passo2;
$cammino["valore"] = acos($cammino["cos"]);
$cammino["valore"] = round($this->converti_radianti_in_gradi($cammino["valore"]) * 60, 2);
return $cammino;
}
parte della pagina di navigazione che chiama il metodo:
$puntoA = new Punto($latitudineA, $_POST["segnoLatitudineA"], $longitudineA, $_POST["segnolongitudineA"]);
$puntoB = new Punto($latitudineB, $_POST["segnoLatitudineB"], $longitudineB, $_POST["segnoLongitudineB"]);
$cammino = $puntoA->calcola_cammino_ortodromico($puntoB);
echo $cammino["cos"] ."<br>";
$rottaIniziale = $puntoA->calcolo_rotta_iniziale_ortodromica($puntoB);
$differenzaLongitudine = $puntoA->get_differenza_di_longitudine($puntoB);
sottolineo che tutti gli altri metodi della classe funzionano perfettamente.. e che questi utilizzano gli stessi metodi di incapsulamento che usa questo metodo quindi anche quelli devono funzionare perfettamente, per esempio $this->get_latitudine(); funziona in altri metodi quindi l'errore non può essere in uno di questi metodi.
ringrazio tutti in anticipo per l'aiuto che mi darete!