Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C++] Calcolare i gradi dell'angolo di un triangolo.

    Salve a tutti,... ho un piccolo problema con una formula matematica applicata al puntatore del mouse.

    prendiamo come esempio il vertice minimo del monitor 0-0 PX muoviamoci contemporaneamente di 100 in orizzontale (X) e 30 in vertical (Y) quello che otterremo è seguire una linea retta (Vedi piano cartesiano) che forma un triangolo dove la base+ la retta hanno un unità misurabile in gradi.

    ES: se mi muovo da 0 a 100 sulla x e sulla y otterrò un angolo a 45°
    Questi gradi mi occorrono per ruotare l'oggetto nella direzione in cui mi muovo.

    A e P identificano la Partenza e l'Arrivo.
    Avendo Px, Ax, Py, Ay sò che per calcolare il coefficente basta fare:

    A = (Ay-Py)/(Ax-Ay)

    quale funzione matematica devo applicare per convertire tutto in gradi?
    CORROBORANTE
    GLEEEEEERRB!

  2. #2
    Ho risolto!...
    Per chi fosse interessato il risultato è:

    alfa = (y2-y1)/(x2-x1)
    gradi = atan(alfa)*180/PI // PI = P greco.
    CORROBORANTE
    GLEEEEEERRB!

  3. #3
    Guarda che la formula che hai applicato non va bene in alcuni casi, ad esempio se la x di arrivo e quella di partenza sono le stesse (basi della geometria ) Ci sono varie soluzioni, la + semplice è quella di fare un controllo e se Px=Ax aggiungere ad Ax una unità scelta opportunamente!


  4. #4
    Anche se l'origine fosse 0 e gli arrivi identici quindi 0,0 10,10 alfa sarebbe 1, che atan(1)*180/PI = 45°

    quindi non trovo varianti...

    Anche se non funziona come dovrebbe funzionare in realtà.

    Mi calcola solo e sempre entro i 0-90°
    Non restituisce i valori negativi
    CORROBORANTE
    GLEEEEEERRB!

  5. #5
    Come fai a dividere per zero, non capisco la tua affermazione ! Se x1=2 e x2=2 ma y1 diverso da y2 alfa è infinito!

    Cmq guarda questo link, ti può dare una mano
    http://www.ioprogrammo.it/crobots/html/tutorial.html

  6. #6
    scusa,... ma hai capito almeno di cosa parlo?

    Se la divisione dovesse essere per 0 allora non ci sarebbe nessun angolo da calcolare no?
    CORROBORANTE
    GLEEEEEERRB!

  7. #7
    Io mi riferisco al modo di calcolare il coefficiente!

    Tu hai scritto :
    A e P identificano la Partenza e l'Arrivo.
    Avendo Px, Ax, Py, Ay sò che per calcolare il coefficente basta fare:

    A = (Ay-Py)/(Ax-Ay)

    Ad esempio non ti può capitare che il punto di partenza è (4,5) e quello di arrivo è quello (4,8)!

  8. #8
    Forse ho capito, in pratica hai un oggetto fermo che deve ruotare guardando al puntatore del mouse! Eccoti la soluzione per calcolare i gradi a partire da un punto(Px,Py) ad un altro (Ax,Ay):

    x=Px-Ax
    y=Py-Ay

    if(x==0)
    {
    if(Ay>Py)
    grado=90
    else
    grado=270
    }

    else
    {
    if(Ay<Py)
    {
    if(Ax>Px)
    grado=360+atan(y/x)
    else
    grado=180+atan(y/x)
    }
    else
    {
    if(Ax>Px)
    grado=atan(y/x)
    else
    grado=180+atan(y/x)
    }
    }


    L'ho ricavata dal link che ti ho mandato, se guardi ci sono anche delle versioni + compatte!

  9. #9
    In pratica era un qualcosa di simile ruota seguendo il mouse la provo e faccio sapere
    CORROBORANTE
    GLEEEEEERRB!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.