Vektoren zur Animation



  • Hi!
    Ich habe mal eine frage zu Vektoren in der Computeranimation. Ich bin über ein paar interessante Algorithmen im Internet gestoßen, die mit Vektoren relativ einfach Bewegungsänderungen entsprechend der Laage anderer Objekte berechnen.
    Da ich noch nicht mit Vektoren in der Schule gerechnet habe durfte ich mit heute morgen erstmal einlesen, wobei mir dann natürlich die Frage kam: Wie kann ich Vektoren effektiv zur Animation (inkl. Kollisionsberechnung und entsprechende Handlung) in mein Programm einbauen?
    Derzeit habe ich es so gemacht (2D), dass ich die XPos, YPos, Geschwindigkeit und Winkel in den sich das Objekt bewegt gespeichert habe. Wie kann ich dass nun so umbauen, dass ich einfach mit Vektoren rechnen, aus denen sich der Bewegungswinkel und die Geschwindigkeit, aktuelle Position etc. ergibt?

    Danke!

    P.S: Ein paar gute Links würden mir schon reichten, Hauptsache ich habe irgendwie einen Ansatz..



  • Hast du dir den Wikipedia Artikel zu Vektoren durchgelesen? Ein Vektor definiert sowohl Richtung als auch Betrag (Laenge).
    Im deinem Falle von Geschwindigkeit betrachtest du die Geschwindigkeit als Vektor (Geschwindigkeit ist eine vektorielle Groesse, s. ebenfalls Wikipedia).
    Das wuerde bedeuten du musst die Position deines Objektes und einen Vektor fuer die Geschwindigkeit speichern. Ersteres kann auch schon als Vektor aufgefasst werden.

    also etwa (pseudo):

    class Vector
    {
      int x;
      int y;
    };
    
    class Object
    {
      Vector position;
      Vector speed;
    
      Move()
      {
        position += speed;
      }
    };
    

    Bewegt sich das Objekt einmal weiter, addierst du einfach speed zu position (entsprechende Operatoren in Vector vorausgesetzt) und erhaelst die neue Position deines Objektes.





  • Ja ich habe den Wikipediaartikel studiert und glaube auch zum großteil verstanden. Was für mich wirklich fraglich ist, ist die Tatsache, warum ich die Geschwindigkeit als Vektor auffasse(n soll). An sich ist ja ein Vektor nichts anderes als der Weg von Position 1 nach Position 2.
    Position 1 kenne ich, Position 2 ergibt sich dann doch aus der Geschwindigkeit und dem Winkel zu dem ich mich Richtung Position 2 bewege.
    Also geometrisch vorgestellt, wäre doch die Geschwindigkeit die Hypothenuse des Dreieckes. Dann könnte ich daraus die Katheten (was ja dann den die Positionsänderung auf der x bzw. y Achse gleich käme) mit dem Winkel berechnen.
    So mache ich das momentan in meinem Programm.

    Also vereinfacht gefragt: Ich verstehe nicht, wieso ich die Geschwindigkeit als Vektor darstellen soll, wo sich doch aus Geschwindigkeit/Winkel/XPos/YPos immer eine eindeutige neue Position ergibt.



  • Ein Vektor ist NICHT zwingend ein Punkt!
    Die Geschwindigkeit solltest du als Vektor definieren, ebenso die Position (Ortsvektor) und die "Blickrichtung"/"Drehung". (=> 3 Vektoren)

    In der Physik ist die Kraft, genauso wie die GEschwindigkeit oder der Impuls eine _gerichtete Größe_ und dadurch zwangsweise ein Vektor.

    Rechnest du nur mit einem Winkel und einer Länge, hast du ebenfalls einen Vektor, den man aber umgeschrieben (x,y) besser nutzen kann.

    Schau dir mal meinen Link an, da ist imo ein gutes Beispiel...

    ----
    -Der Ortsvektor "pos" gibt eine beliebige Stelle des Bildschirms an, also einen Punkt. Hier liegt z.B. das Raumschiff.
    -Der Richtungsvektor gibt an, in welche Richtung es gerichtet ist (optional)
    -Der Geschwindigkeits- (v-)Vektor zeigt nun die Bewegungsrichtung und Geschwindigkeit des Raumschiffs an.



  • Öhm irgendwie stehe ich gerade aufm Schlauch. Also ich habe hier gerade eine neue Klasse anlegt und die auf den namen "2DObject" getauft. Diese Klasse soll dann die ober Klasse für alle kommenden 2D Objekte bilden.
    So die aktuelle Position kann ich durch X/Y Variable repräsentieren oder durch einen Vektor, kommt aufs selbe heraus. Aber wie bringe ich meinem Objekt nun bei sch zu bewegen? (Mit Vektoren natürlich, der Grund warum Vektoren sollte klar sein: Wenn man es denn verstanden hat ist es einfach damit zu rechnen, oder?)



  • Pille456 schrieb:

    Aber wie bringe ich meinem Objekt nun bei sch zu bewegen?

    genau das wurde doch im 2. Post erläutert?!



  • Der Link zu nehe, den ich geposted habe enthällt doch wohl ein prima Beispiel, oder!? Da werden doch alle physikalischen Gleichungen etc. sogar noch erklärt...



  • Ja hat sich erledigt 😃
    Habs nun gepackt... danke^^


Anmelden zum Antworten