Newsgroup: it.comp.lang.visual-basic
Titolo: Trigonometria :)

Avessi studiato di più! ;) Dato un punto in una picture box, quindi
conoscendo X e Y, come posso ricavare il grado dell'angolo? SIN, COS,
COMazzSeFa?

Se non ho studiato male:
Y = d*SIN (angolo)
X = d*COS (angolo)
d: distanza tra l'origine e il punto in questione  (ovvero il raggio)
Ciao
Luca
"-=#[ zerodefex ]#=-" <zerodefex@-NO-SPAAM-ifrance.com> wrote in message
news:Q2mf8.43119$fa5.1...@twister2.libero.it...


 d: distanza tra l'origine e il punto in questione  (ovvero il raggio)
Ciao,
Ti ringrazio ma questo lo sapevo già, mi interesserebbe invece conoscere
l'angolo rispetto all'origine. Ad esempio se muovo il mouse su una
picturebox nell'evento mousemove vorrei calcolare appunto l'angolo relativo
al punto 0 in quanto conosco già X e Y.
saluti,

 COMazzSeFa?
Per questo tipo di domande rivolgiti a it.scienza.matematica (veramente
competenti e disponibili).
Comunque:
Private Function Angolo(ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As
Long, ByVal Y2 As Long) As Long
    Dim RInv As Double
    RInv = 180# / PI
    If (X2 = X1) Then
        If (Y1 > Y2) Then
            Angolo = -90
        ElseIf (Y1 < Y2) Then
            Angolo = 90
        Else
            Angolo = 0
        End If
    Else
        'atg (Y/X) se X>0 e Y>0  (I quadrante)
        'atg (Y/X) + pigreco se X<0 e Y>0 (II quadrante)
        'atg (Y/X) + pigreco se X<0 e Y<0 (III quadrante)
        'atg (Y/X) +2pigreco se X>0 e Y <0 (III quadrante)
        If (Y2 > Y1) Then
            If (X2 > X1) Then
                Angolo = Atn((Y2 - Y1) / (X2 - X1)) * RInv
            Else
                Angolo = (Atn((Y2 - Y1) / (X2 - X1)) + PI) * RInv
            End If
        Else
            If (X2 > X1) Then
                Angolo = (Atn((Y2 - Y1) / (X2 - X1)) + (2 * PI)) * RInv
            Else
                Angolo = (Atn((Y2 - Y1) / (X2 - X1)) + PI) * RInv
            End If
        End If
    End If
End Function
Questo di dà l'angolo secondo la scuola di pensiero -A = rotazione in senso
orario.
Ciao

 orario.
Ho sempre pensato che sei un genio! ;)
GRAZIE!!

"-=#[ zerodefex ]#=-" <zerodefex@-NO-SPAAM-ifrance.com> ha scritto nel
messaggio news:jOmf8.39129$v7.14...@twister1.libero.it...

devi usare la funzione Tangente
angolo = Y / X  .ma ricordati che gli angoli sono espressi in radianti
quindi li devi trasformare in gradi
leonello

"-=#[ zerodefex ]#=-" <zerodefex@-NO-SPAAM-ifrance.com> ha scritto nel
messaggio news:jOmf8.39129$v7.14...@twister1.libero.it...

nel mio post precedente
ho dimenticato di dirti che un angolo di 90 gradi (angolo retto) e' uguale a
1.5707963267942 radiianti  ( P_greco /  2 )  quindi fau ttu le opportune
proporzioni
leonello

"-=#[ zerodefex ]#=-" <zerodefex@-NO-SPAAM-ifrance.com> ha scritto nel
messaggio news:jOmf8.39129$v7.14...@twister1.libero.it...

altra dimenticanza (la fretta o la vecchiaia o la perdita di memoria ?????)
angolo = Y / X  ok
ma devi controllare il valore di  X perche' se ha un valore 0 commetti un
errore (divisione per zero) ma se X= 0 il tuo angolo e' di  90 gradi  o -90
a seconda del segno di Y
spero di essere stato chiaro
leonello

 ha scritto nel messaggio
news:Yfxf8.24752$_u5.7...@news1.tin.it...
