Kreis im Koordinatensystem / Punkte im Abstand von Z° in X und Y werte ausgeben

  • Hi.

    Ich kann leider das ganze nicht gut mit Worten erklären, deshalb erstmal ein Bild:
     [Blockierte Grafik: http://s1.directupload.net/images/user/110720/8pmomqfd.jpg]

    Eventuell müsste ich später den Mittelpunkt noch etwas anpassen, also wäre es (wenn die Formel überhaupt stimmt, was ich aber bezweifel):
    r² - (x + M)²
    Edit:
    Später soll eine For-Schleife jeweils 90, 180, 360 X und Y Werte ausgeben (wobei das Programm als erstes (90) bei 45° anfangen soll (rechts oder links) / als zweites bei 90° / und bei den 360 ist es egal. Damit ein Viertelkreis, ein Halbkreis und ein vollständiger kreis entsteht.

    Wenn man alle Punkte verbindet, wäre die mitte dieser Linie immer auf der 0 Achse liegt. (wie gesagt bei 360 wäre es eigentlich egal)

    Das alles in AutoIT zu packen ist ja nicht das Problem, aber ohne Formel komm ich trotzdem nicht weiter X(

    2 Mal editiert, zuletzt von Taliis (27. Januar 2012 um 23:11)

  • [Blockierte Grafik: http://www.post4me.net/Grafik/Kreis.jpg]

    Ganz allgemein kann man die Werte für x und y über die Winkelfunktionen berechnen. Ich würde einfach mal den Kreis im Mittelpunkt des Koordinatensystems annehmen, dann berechnet sich y = r * sin(alpha) und x = r * cos(alpha). Da der Kreis verschoben ist, muss nur noch die Verschiebung um deltaX und deltaY zu x und y addiert werden.
    Die Winkelfunktionen erwarten den Winkel im Bogenmaß. In der AutoIt-Hilfe ist die Umrechnung DEG -> RAD erklärt.

    Einmal editiert, zuletzt von bastelfritze (27. Januar 2012 um 13:40)

  • Danke.
    Ich werde das gleich mal testen... Hab an die Winkelfunktion gar nicht gedacht.

    Cos(alpha): 1°
    Radius: 1,00 (In der FOR-Schleife steigend)

    1,00 * 1 = 0,9998
    1,00 * 2 = 0,9994
    1,00 * 3 = 0,9986
    [...]
    1,00 * 75 = 0,2588
    [...]
    1,00 * 190 = -0,9848
    [...]
    1,00 * 284 = 0,2419

    War halt nur ein test mit cos(alpha).
    Bei sin(alpha) müsste es also lauten:

    1,00 * 1 + 1,00

    Damit der Kreis um einen Meter in die Höhe verschoben wird.
    Soweit habe ich das jetzt verstanden.

    EDIT:
    Funktioniert alles wunderbar.
    Danke nochmal.

    [autoit]

    #include <Math.au3>

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

    $height = 1.00
    $radius = 1.00
    $degrees = 5
    $radians = _Radian($degrees)

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

    for $degrees = $degrees to 360 Step $degrees
    $radians = _Radian($degrees)
    $X = Cos( $radians ) * $radius
    $Y = Sin( $radians ) * $radius + $height

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

    if ($degrees >= 45 And $degrees <= 135 ) Then
    MsgBox(0, "Test", "X = " & $X & " / Y = " & $Y & @CRLF & $degrees & "°")
    ;MsgBox(0, "l", $count)
    EndIf

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

    Next

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

    3 Mal editiert, zuletzt von Taliis (27. Januar 2012 um 21:24)