kostenloser Webspace werbefrei: lima-city


Formel: Wegberechnung

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    x-web

    Kostenloser Webspace von x-web

    x-web hat kostenlosen Webspace.

    Hallo Zusammen,

    ich hab folgendes Problem:

    Ich möchte ein Objekt auf dem kürzesten Weg von einem beliebigen Punkt zu einem anderen mit der Geschwindigkeit x bewegen. Hindernisse muss es dabei keine überwinden.

    Mein Problem ist jetzt die Wegberechnung, kennt jemand eine Lösung für das Problem. Ich hab auch schon gegoogelt aber nichts brauchbares gefunden.

    Gruß x-web
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Hi,

    die Lösung deines Problems sollte der A*-Algorithmus sein:
    http://de.wikipedia.org/wiki/A*-Algorithmus

    wenn du danach suchst, findest du wahrscheinlich auch schon fertige Implementierungen, je nachdem, für welche Programmiersprache du den suchst:
    http://www.google.at/search?hl=de&q=a+star+algorithm&btnG=Google-Suche&meta=
  4. Autor dieses Themas

    x-web

    Kostenloser Webspace von x-web

    x-web hat kostenlosen Webspace.

    Nein so kompliziert muss es garnicht sein.

    Ich will nur ein Object von zB. (0/0) auf (100/100) mit der Geschwindigkeit 5 bewegen.

    Hier kleine Skizze:

    http://x-web.lima-city.de/move.GIF
  5. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Dann erklär bitte genauer, was du mit der Wegberechnung genau meinst! Meinst du etwa die Weglänge?
  6. Möchtest du also eine Formel haben, die dir zu jedem Zeitpunkt (t) die Koordinaten für den Aktuellen Ort angibt?

    Wenn du also von (0/0) auf (100/100) kommen möchtest, dann sollte das doch durch nen Pytagoras zu regeln sein?

    Den du duch die Bedingung x <= 100 beendest? (Also ne For-Schleife) oder was meinst du jetzt? (So hätte ich es verstanden ;) )

    PS:
    Alternativ würde aber hier auch reichen:
    For i = 0 to 100 step +5
    y = i
    x = i
    malbefehl(x,y)
    Next


    Beitrag zuletzt geändert: 9.2.2009 14:29:55 von erasmuz
  7. am besten arbeitest du mit Vektoren:

    velocity = ziel - position;
    if ( velocity.Length() > 2)// das ist, damit der Spieler nicht über dem Ziel hin und her ruckelt kann auch mehr als 2 sein einfach rumprobieren
    {
                    velocity = ziel - position;
                    velocity.Normalize(); //macht aus dem Vektor einen Vektor der Länge 1
                    position += velocity * deinegeschwindigkeit;
    }
  8. projektverwaltung

    projektverwaltung hat kostenlosen Webspace.

    wie erazmus schon erwähnt hat einfach:

    weg=wurzel(X-Entfernung² + Y-Entfernung²)

    und:

    benötigte Zeit = Strecke / Geschwindigkeit
  9. Formel: a^2+b^2 = c^2
    und
    Formel: s = v * t
    brauchst du..


    Das erste, damit du weißt, wie lang die Strecke ist.
    Und die Zweite, damit du weißt, wann dein Objekt wo ist.

    Strecke berechnen
    http://vercetti.lima-city.de/move.GIF (jaja die ausdrücke auf dem bild sind komisch gewählt xD )
    Formel: a^2+b^2 = c^2
    -> Formel: c = \sqrt{300^2+375^2} = 480,234

    So hast du schonmal die Strecke :>

    Weg je nach Zeit berechnen
    Nehmen wir mal an. Die Geschwindigkeit beträgt 5 cm/s und er bewegt sich 5s.

    Formel: s = v * t = 5 cm/s * 5s = 25cm

    Fertig :>

    Jetzt weißt du nach welcher Zeit er wo ist :>


    Rest ist halt nurnoch, dass du machen musst, dass die gefahrene strecke nicht größer ist als die mögliche, weil ja nur auf der strecek soll


    //Edit mist zu langsam xD

    Beitrag zuletzt geändert: 9.2.2009 15:47:27 von vercetti
  10. Autor dieses Themas

    x-web

    Kostenloser Webspace von x-web

    x-web hat kostenlosen Webspace.

    Sry, ich hab den Thread missverständlich formuliert. Ich möchte nicht die Entfernung berechnen sondern ein Ojekt zu einem Punkt bewegen und ich weis nicht wie ich das am besten realisiere.

    Im Prinzip will ich sowas wie diese Animation mit einem Script realisieren:

    http://x-web.lima-city.de/slide.swf

    PS: Ich hätte das Thema besser "Objekt zu Punkt bewegen" nennen sollen

    Beitrag zuletzt geändert: 9.2.2009 16:23:43 von x-web
  11. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    x-web schrieb:
    Sry, ich hab den Thread missverständlich formuliert.
    PS: Ich hätte das Thema besser "Objekt zu Punkt bewegen" nennen sollen

    Um weitere Missverständnisse auszuschließen: in welcher Programmiersprache willst du das implementieren? Denn mit Pseudo-Code wird dir wahrscheinlich wieder nicht gehofen sein!

    Ansonsten würd' ich's Schritt für Schritt so machen (Pseudo-Code :slant:):
    Gegeben sind Punkt 1 und Punkt 2, je mit X- und Y-Koordinaten
    
    deltaX = x2-x1;als Ganzzahl
    deltaY = y2-y1;als Ganzzahl
    steps = 50;Anzahl der Zwischenschritte für Animation
    Delay = 10;z.B. 10 Millisekunden vor nächsten Animationsschritt
    
    AnimX = deltaX / steps;als Kommazahl
    AnimY = deltaY / steps
    
    Schleife mit Zähler i durchlaufen lassen
    currentXd = x1 + AnimX * i;als Kommazahl
    currentX = runden(currentXd);für Ausgabe auf ganze Pixel ...
    currentYd und currentY detto!
    
    Bild zeichnen
    Warten;die in Delay angegebene Zeit warten
    Zähler inkrementieren
    Schleife erneut durchlaufen.
    
    Und dann bist du mit deinem Bildchen am Ziel, und aus.


    Beitrag zuletzt geändert: 9.2.2009 16:45:25 von burgi
  12. Autor dieses Themas

    x-web

    Kostenloser Webspace von x-web

    x-web hat kostenlosen Webspace.

    Kein Problem, Pseudo-Code reicht. Jetzt hab ichs verstanden.

    Vielen Dank für eure Hilfe!

    Gruß X-Web
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!