Ergebnis 1 bis 18 von 18

Thema: Expertenfrage (Rundungsfehler des Makers umgehen - wie?)

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    @Mivey: Ich will den Startpunkt aber zufällig haben, also

    Start.x = Gegner.X +/- Zufallszahl
    Start.Y = Gegner.Y +/- Zufallszahl

    und der Zielpunkt ist dann quasi die "gespiegelte" Strecke, sodass der Gegner wirklich exakt in der Mitte steht.

    Es wäre theoretisch möglich, als Zufallszahlen nur Vielfache von 20 zuzulassen (also 20, 40, 80 etc.), damit die Differenz in JEDEM Fall durch 20 teilbar ist, aber da 40 Pixel mir schon zu weit entfernt sind, fällt diese Methode leider auch flach.


    @Makenshi:

    *Runden* kann der Maker ja richtig (also mathematisch). Das ist nicht das Problem. Das Problem ist, dass beim Runden eine Ungenauigkeit entsteht, die bei mehrfacher Anwendung (wie hier) das eigentliche Ziel bei Weitem verfehlt. Es müsste eine Möglichkeit geben, die Rundungsungenauigkeit auszugleichen. Eliminieren kann man sie nicht, der Maker kann kein Pic auf der Position 23,5/67,54 darstellen. Halbe Pixel gibt's keine xD Mein Ansatz diesbezüglich:

    Der Rundungsfehler3 multipliziert mit dem Faktor X muss ein exaktes Vielfaches (Y) der Zahl 10000 ergeben.
    X entspräche dann der Anzahl von Schritten bis zur Addition. Der addierte Wert entspricht Y.

    Rundungsfehler3*X = 10000*Y

    ==> zwei Varis, eine Gleichung, nicht zu lösen.

    Lua könnte hier in der Tat helfen, da sich dort dann die Rundungsungenauigkeiten dahin gehend reduzieren könnten, da Lua mit Kommazahlen rechnen kann.


    !!!!

    Makenshi, das ist die LÖSUNG! Man berechnet die 20 Koordinatenpaare im Voraus und dividiert DANN durch den Multiplikator.
    Nochmal zum Mitdenken: Multipliziert man alle Werte durch ein Vielfaches von 10, rutscht das Komma nach hinten. Ich nehme hier zum Beispiel 10000. Der "Teilungsfaktor" ist hier natürlich 20, also 20 Animationsschritte.

    Also zum Beispiel:

    Pos1 = Anfangsposition * 10.000
    Pos2 = Anfangsposition * 10.000 + (Differenz / Teilungsfaktor)*10.000
    Pos3 = Pos2 + (Differenz / Teilungsfaktor) * 10.000
    etc.



    Und zum SCHLUSS dann:

    Pos1 = Pos1 / 10000
    Pos2 = Pos2 / 10000
    Pos3 = Pos3 / 10000


    Damit wird die Rundungsungenauigkeit nicht 20 mal angewandt, sondern de facto nur 1 mal. Und alles, was hinter der fünften Kommastelle ist, interessiert sowieso keinen xD


    Danke Makenshi, das war der entscheidende Denkanstoß!

    Geändert von Alan (14.01.2009 um 19:25 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •