• Super User

    Ripeto quanto ho detto prima, qual è il vertice dell'angolo che consideri?

    Due punti nello spazio (o nel piano) non individuano un angolo, ma tuttalpiù il segmento che li congiunge.

    Ci vogliono 3 punti, di cui uno vertice, per definire un angolo.


  • Super User

    Per maggiori chiarimenti ti consiglio di leggere questo
    http://it.wikipedia.org/wiki/Sistema_di_coordinate_polari

    Nel caso delle coordinate polari si prende come riferimento non 3 punti, ma il centro e un sistema cartesiano.


  • User Attivo

    Guarda quest'immagine...

    poandrea.com/mappa.png

    Considerando il punto A: Roma e il punto B: L'Acquila....possiamo dire che L'Acquila si trova a 30° Rispetto a Roma....

    Ora mi chiedo...c'è una formula per calcolare il valore dell'angolo...avendo le due coordinate dei due punti???


  • Super User

    Dunque consideri un sistema cartesiano, immagino con l'asse x parallelo all'equatore.

    Qui trovi tutte le formule per calcolare l'angolo
    http://it.wikipedia.org/wiki/Rappresentazione_dei_numeri_complessi
    l'argomento è differente ma la situazione è identica.

    La formula è semplicissima, in quanto devi calcolare l'arcotangente del rapporto tra la differenza di coordinate y e la differenza di coordinate x.

    Il problema è che devi capire in quale quadrante ti trovi per determinare univocamente l'angolo, in quanto avrai sempre soluzioni possibili doppie.
    Perciò ti rimando a quella pagina di Wikipedia che spero potrà chiarirti le idee.


  • User Attivo

    Intanto grazie mille per la segnalazione.

    Ho provato a mettere in pratica quello che mi hai detto.. e sono arrivato a questa formula:

    [php]
    $lat1="41.8880";
    $lat2="41.794";
    $lon1="12.25";
    $lon2="12.5044";
    echo $dist=atan(($lon1-$lon2)/($lat1-$lat2));
    [/php]Con Risultato: -1.2168590385299

    il risultato ottenuto però...in che unità di misura mi viene fuori??

    Poi confrontando il mio risultato con quello ottenuto in questa pagina:

    sunearthtools.com/dp/tools/distance.php

    noto che è molto diverso, in quanto a loro viene: 116.38°

    Grazie ancora per l'aiuto.


  • User Attivo

    Ciao Amistat,
    l'angolo ti occorre per misurare la distanza sulla superficie?


  • User Attivo

    No quello già lo faccio...mi occorre per definire la posizione di B rispetto ad A...


  • User Attivo

    Ciao Amistat,

    la funzione atan restituisce il valore dell' angolo espresso in radianti.

    Per ottenere il valore in gradi devi moltiplicare il valore ottenuto per 180° e dividere per pi-greco (3,14159 26535 89793...).

    Inoltre rimane il problema anticipato da Claudio e cioè che la tangente di angoli che differiscono per 180° è la stessa. Quindi calcolando l'arcotangente l'angolo che ottieni potrebbe non essere quello giusto.

    Se non sbaglio dovresti aggiungere 180° al risultato finale se la differenza tra le latitudini è negativa.

    [php]$lat1="41.8880";
    $lat2="41.794";
    $lon1="12.25";
    $lon2="12.5044";
    $dist=atan(($lon1-$lon2)/($lat1-$lat2))*180.0/3.141592653589793;
    if (($lat1-$lat2) < 0) then $dist+=180.0;[/php]

    :ciauz:


  • User Attivo

    Ciao OlaOla, e grazie per la risposta...

    Ho applicato la tua formula, ma credo ci siano ancora dei problemini...

    Con riferimento sempre alla pagina postata in precedenza, ho incrociato i due punti....cercando di ottenere gli stessi risultati sia con lo script realizzato, sia con la pagina segnalata:

    Vado a elencare i test..

    [PHP]
    $lat1="41.8880";
    $lat2="41.794";
    $lon1="12.25";
    $lon2="12.5044";
    $dist=(atan(($lon1-$lon2)/($lat1-$lat2))*180.0)/3.141592653589793;
    if ($lat1-$lat2 < 0)
    $dist+=180;
    echo $dist;
    [/PHP]

    Risultato: -69.72088717011

    Mentre con la pagina: 116.38

    [PHP]
    $lat2="41.8880";
    $lat1="41.794";
    $lon2="12.25";
    $lon1="12.5044";
    $dist=(atan(($lon1-$lon2)/($lat1-$lat2))*180.0)/3.141592653589793;
    if ($lat1-$lat2 < 0)
    $dist+=180;
    echo $dist;
    [/PHP]

    Risultato: 110.27911282989

    Mentre con la pagina: 296.38

    Si nota che i due risultati, siano diversi di circa 180° (che ci sia uno scarto di una decina di gradi non mi importa)

    Per caso il +180 va fatto a prescindere?


  • User Attivo

    PS: ho risolto così

    [php]
    $lat2="41.8880";
    $lat1="41.794";
    $lon2="12.25";
    $lon1="12.5044";
    $dist=(atan(($lon1-$lon2)/($lat1-$lat2))*180.0)/3.141592653589793238462643383279502884197169399375105820974944592;
    if(($lat1-$lat2)<0)
    $dist=$dist+180;
    if(($lon1-$lon2)<0 && ($lat1-$lat2)>0)
    $dist=$dist+360;
    if(($dist>'0' && $dist<'20') || ($dist<'360' && $dist>'340'))
    $pos='Nord';
    if($dist>'20' && $dist<'70')
    $pos='Nord-Est';
    if($dist<'340' && $dist>'290')
    $pos='Nord-Ovest';
    if($dist<'290' && $dist>'250')
    $pos='Ovest';
    if($dist>'70' && $dist<'110')
    $pos='Est';
    if($dist>'110' && $dist<'160')
    $pos='Sud-Est';
    if($dist<'250' && $dist>'200')
    $pos='Sud-ovest';
    if($dist<'200' && $dist>'160')
    $pos='Sud';
    [/php]


  • User Newbie

    Ho una domanda simile a quella di Amisat ma non so come postarla , se non rubando uno spazio risposta in questa discussione .
    L'Amministratore può indicarmi come fare ?
    Grazie mille