Berechen der Pos im Raum



  • Moin zusammen,

    ich tu mich gerade ein bisschen schwer damit zu verstehen, wie man sich in einem 3D Raum bewegt. bzw. wie man das umrechnet.
    Folgendes Problem: Nach dem ich herausgefunden habe wie man ein 2D Sternenfeld programmiert (wie der Windowsscreenschoner) hat mich die Lust gepackt und ich würde nun gerne das ganze 3D machen. Und zwar so als ob man mit einem Raumschiff rumgurkt. Die passenden Trigonomischen Formeln habe ich (glaube ich). Aber es ist mir überhaupt nicht klar wie ich eine eine Vorwärtsbewegung UND Rotation zusammen kriege...
    Vielleicht hat jemand irgendwelche guten Tips oder so? Ich wäre sehr dankbar... vorallem weil ich mir deswegen schon seit Tagen die Haare raufe.

    Danke



  • Ich seh schon, dass meine Erklärung wahrscheinlich nicht gut genug ist. Also ich versuche es einmal anderst zu erklären.

    Gegeben sei ein Auto von oben. Das Auto kann vorwärts fahren. Wenn ich nun nach links oder rechts abbiege (+/-90°), dann dürfte sich der Positionswert auf Z nicht mehr ändern. Dafür aber der von X.

    Wie ich eine Kreisbewegung um einen definierten Punkt mache ist mir klar. Aber wie baue ich da noch die Vorwärtsbewegung mit ein? Vielen Dank!



  • noobiexyz schrieb:

    Wie ich eine Kreisbewegung um einen definierten Punkt mache
    ist mir klar. Aber wie baue ich da noch die Vorwärtsbewegung mit ein? Vielen
    Dank!

    Versuch es doch einmal mit Vektoren:

    • Der erste Vektor gibt an wo sich das Objekt befindet (wahrscheinlich hast du den schon)
    • Der andere Vekor gibt die Geschindigkeit an, also , relativ gesehen, den
      nächsten Ort an, wo sich das Objekt nach der Verschiebung befinden wird.
    • Am Ende verschiebst addierst du die Vektoren

    Wenn sich das Objekt nun dreht, wendest du nur einfach eine Punktspiegelung am

    Geschindigkeitsvekor an.
    Beispiel:

    Position: ( 7 | 9 )
    Geschindigkeit: ( 2 | 2 )
    Drehung: 45 Grad nach links
    neue Geschindigkeit: ( 0 | Wurzel(8) )
    Neue Psotion: ( 7 | 9 ) + ( 0 | Wurzel(8) ) = ( 7 | 9 + Wurzel(8) )
    

    Mit freundlichen Grüßen und über eine Abkürzung seines Names nachdenkend
    Rhombicosidodecahedron



  • Vielen Dank, sofort wenn ich wieder zuhause bin werde ich das einbauen.
    Allerdings habe ich eine Frage wie kommst Du von:
    Geschindigkeit (2|2)
    auf
    neue Geschw. (0|Wurzel(8)) ?

    Danke



  • noobiexyz schrieb:

    Vielen Dank, sofort wenn ich wieder zuhause bin werde ich das einbauen.
    Allerdings habe ich eine Frage wie kommst Du von:
    Geschindigkeit (2|2)
    auf
    neue Geschw. (0|Wurzel(8)) ?

    Danke

    Der Betrag der Geschwindigkeit ist (laut des Satzes von Phytagoras - oder wie er auch immmer geschrieben wird ...):

    |v| = Wurzel( x^2 + y^2 )
    |v| = Wurzel( 2^2 + 2^2 )
    |v| = Wurzel( 4 + 4 )
    |v| = Wurzel( 8 )
    

    Dann hätte ich folgendes gemacht:

    x[t]neu[/t] =  cos([e]alpha[/e]) * |v| - sin([e]alpha[/e]) * |v|
    y[t]neu[/t] =  sin([e]alpha[/e]) * |v| + cos([e]alpha[/e]) * |v|
    

    Wenn du es für die dritte Dimension haben möchtest schau mal unterWikipedia - Drehmatrix - Drehmatrizen des Raumes R³ nach!

    Ich hoffe du weißt was Matrizen (sng.: Matrix) sind!

    Mit freundlichen Grüßen
    Rhombicosidodecahedron


Anmelden zum Antworten