Sin funst nicht...

  • Also ich hab ein Program was mir alpha in einem rechtwinkligen Dreieck ausrechnen soll, nur durch eingabe 2er Punkte:

    [autoit]


    Func _winkelberechnen($X1,$Y1,$X2,$Y2)
    $B = _max($X1, $X2)-_Min($X1, $X2) ;Seite B wird berechnet (X1-X2)
    $A = _max($Y1, $Y2)-_Min($Y1, $Y2) ;Seite A wird berechnet (Y1-Y2)
    $C = Sqrt((($A^2)+($B^2))) ;Seite C wird berechnet (A²+B²=C²)
    Return Sin($A/$C) ;SinusAplha
    EndFunc

    [/autoit]


    Denke das man eigentlich versteht was und wie der Winkel berechnet werden soll... (Meine UDF beruht hierauf)

    Aba das Problem ist das Sin nicht funst :/
    $A/$C gibt mir einen richtigen Wert zurück der eigentlich umgewandelt der passende Winkel sein müsste aba das passt nicht...
    Hab ich was vergessen oder sin falsch verwendet?
    MfG

  • Hi, Probier mal so:

    ich weis jetzt nicht ob deine Funktion stimmt, aber der Sinus (wie er auf dem Taschenrechner steht) wird anders berechnet.

    [autoit]

    #include <Math.au3>

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0,"",_winkelberechnen(5,10,20,30))

    [/autoit][autoit][/autoit][autoit]

    Func _winkelberechnen($X1, $Y1, $X2, $Y2)
    $B = _Max($X1, $X2) - _Min($X1, $X2) ;Seite B wird berechnet (X1-X2)
    $A = _Max($Y1, $Y2) - _Min($Y1, $Y2) ;Seite A wird berechnet (Y1-Y2)
    $C = Sqrt((($A ^ 2) + ($B ^ 2))) ;Seite C wird berechnet (A²+B²=C²)
    Return _Sin($A / $C) ;SinusAplha
    EndFunc ;==>_winkelberechnen

    [/autoit][autoit][/autoit][autoit]

    Func _sin($deg)
    Return Sin($deg * (3.14159265358979/180))
    EndFunc

    [/autoit]
  • Um aus der Gleichung sin(alpha)=A/C das Alpha zu bekommen musst du die Gleichung noch nach Alpha umstellen.
    Das wäre dann Alpha = ArcSin(A/C).
    Du brauchst also gar nicht den Sinus sondern den ArcusSinus.

    Beispiel:

    [autoit]

    Global $Pi = 3.141592653589793238462643383279
    MsgBox(0,"","Winkel=" & _winkelberechnen(0,0,2,2) * 180/$Pi & "°")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _winkelberechnen($X1,$Y1,$X2,$Y2)
    Return ASin(Abs($Y1-$Y2)/Sqrt(($X1-$X2)^2+($Y1-$Y2)^2))
    EndFunc

    [/autoit]
  • Um aus der Gleichung sin(alpha)=A/C das Alpha zu bekommen musst du die Gleichung noch nach Alpha umstellen.
    Das wäre dann Alpha = ArcSin(A/C).
    Du brauchst also gar nicht den Sinus sondern den ArcusSinus.

    Beispiel:

    [autoit]

    Global $Pi = 3.141592653589793238462643383279
    MsgBox(0,"","Winkel=" & _winkelberechnen(0,0,2,2) * 180/$Pi & "°")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _winkelberechnen($X1,$Y1,$X2,$Y2)
    Return ASin(Abs($Y1-$Y2)/Sqrt(($X1-$X2)^2+($Y1-$Y2)^2))
    EndFunc

    [/autoit]

    Danke hat mir geholfen ;)