Parabel berechnen fehlgeschlagen!

  • Hallo, ich habe ein Problem mit dem Bewegen eines Objektes in einem Halbkreis(Parabel).
    Am Ende soll das die Jump-Funktion einer Figur sein, also muss man auch die Höhe und die Weite verändern können.
    Mein Ansatz:

    [autoit]

    for $i = 0 to 50 step 1 ;von 0 auf 50 Pixel in der Weite
    Sleep(10) ;kurze Zeit warten

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

    $jump_h = 25 ;Höhe des Jumps
    $jump_w = 50 ;Weite es gesamten Jumps

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

    $jump_n = (-1*(($i-$jump_w/2)^2))+$jump_h

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

    ;Move(x-Position,y-Posititon)
    Move($i,$jump_n)
    next

    [/autoit]


    Am Ende soll es so was ergeben: siehe Bild im Anhang!
    Leider funktioniert dies nicht, da die Figur dann sich ca 3 mal nach oben und unten bewegt und dann oben verhahrt? :evil:

  • Setz mal an Stelle Deines

    [autoit]

    Move($i,$jump_n)

    [/autoit]

    eine MsgBox mit $i und $jump_n.
    Da siehst Du dann ob die richtigen Werte rauskommen...

    Ich glaub der Fehler liegt an einer anderen Stelle...

  • geht auch nicht...also ihrgentwie muss die Funktion falsch sein...es ergibt einfach keinen sinn... 8|

  • Wenn ich nur Deinen Code von oben nehm, in ein Script packe und ne msgbox anstelle von move verwende dann bekomm
    ich die Werte:

    Spoiler anzeigen

    0 -600
    1 -551
    2 -504
    3 -459
    4 -416
    5 -375
    6 -336
    7 -299
    8 -264
    9 -231
    10 -200
    11 -171
    12 -144
    13 -119
    14 -96
    15 -75
    16 -56
    17 -39
    18 -24
    19 -11
    20 0
    21 9
    22 16
    23 21
    24 24
    25 25
    26 24
    27 21
    28 16
    29 9
    30 0
    31 -11
    32 -24
    33 -39
    34 -56
    35 -75
    36 -96
    37 -119
    38 -144
    39 -171
    40 -200
    41 -231
    42 -264
    43 -299
    44 -336
    45 -375
    46 -416
    47 -459
    48 -504
    49 -551
    50 -600

    Post am besten mal Deinen ganzen Code...

  • ich weiß nicht woher deine Funktion kommt, aber mit den 3 Punkten (0;0) (25;25) (50;0) eingesetzt in die allgemeine quadratische Funktion y=ax^2+bx+c wird nach bissl Umformen:
    y = -0,04 x^2 + 2x
    und damit wird das auch eine Parrabel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    GUICreate('', 100, 100)

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

    For $x = 1 To 50
    ConsoleWrite($x & " " & y($x) & @CRLF)
    GUICtrlCreateButton("", $x, Int(100 - y($x)), 5, 5)
    Next
    GUISetState()

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

    Do
    Until GUIGetMsg() = -3

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

    Func y($x)
    Return -0.04 * $x * $x + 2 * $x
    EndFunc ;==>y

    [/autoit]
  • Zitat

    Naja....war woll nicht ganz richtig...

    Naja...knapp vorbei ist auch daneben^^
    Mit der Scheitelfunktion kannst du Anhand der gegebenen Parabelfunktion den Scheitelpunkt ermitteln. Im Prinzip könntest du das benutzen um herauszubekommen, ob dein "Springer" das Spielfeld nach oben verlässt...