Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mär 28, 2024 20:27

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Rotation starrer Körper
BeitragVerfasst: Fr Mai 29, 2015 13:02 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Hi,
ich tüftle gerade an einer Funktion, die einen starren Körper ausgehend von den auf ihn wirkenden Kräfte beschleunigt (Translation und Rotation).

Mit der Rotation habe ich Probleme, besser gesagt mit den Rotationen, ein starrer Körper kann sich ja um beliebige Achsen rotieren und nicht nur um eine gleichzeitig.
Hat zufällig jemand eine gute Quelle oder sogar Code, der einen Starren Körper ausgehend von seinem Trägheitstensor und den auf ihn wirkenden Partialkräfte beschleunigt?

Grüße,
Vinz

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotation starrer Körper
BeitragVerfasst: Fr Mai 29, 2015 13:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Praktischerweise kann man in 3D eine Reihe von Rotationen oder generell beliebige Rotationen um beliebige Achsen eines Körpers als eine einzige Rotation um eine berechnete Achse und einen berechneten Winkel darstellen:
wikipedia hat geschrieben:
In 3-dimensional space, according to Euler's rotation theorem, any rotation or sequence of rotations of a rigid body or coordinate system about a fixed point is equivalent to a single rotation by a given angle θ about a fixed axis (called Euler axis) that runs through the fixed point.
Dafür verwendet man Quaternionen (quelle für oben; der Link erklärt, wie und warum das funktioniert).

Generell werden deine Rotationen durch den Massenschwerpunkt gehen, sodass du wirklich nur die Richtung der Achse und den Winkel brauchst. Alles andere führt ja zu einer Rotation um den Massenschwerpunkt und einer Translation, wenn mich mein Physikwissen jetzt nicht täuscht :).

Du musst also "nur" aus den anliegenden Kräften die Drehmomente und die (verschiebende) Kraft berechnen und das dann anwenden.

viele Grüße,
Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotation starrer Körper
BeitragVerfasst: Fr Mai 29, 2015 14:24 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Lord Horazont hat geschrieben:
Du musst also "nur" aus den anliegenden Kräften die Drehmomente und die (verschiebende) Kraft berechnen und das dann anwenden.


Das hab ich gemacht, sieht eigentlich auch ganz plausibel aus, solange das Objekt nur um 2 Achsen rotiert wird, sobald es um eine dritte Achse rotiert wird, wirds etwas wild...
Habe es mit Euler und Quaternionen via glm versucht...
Code:
  1.  
  2.  
  3.     foreach(normal)
  4.     {    
  5.           beschleunigung += partialKraft;
  6.           drehMoment += cross(normalMat*urPos, partialKraft);
  7.     }
  8.    
  9.     velPos += simspeed*beschleunigung;
  10.     velAngles += simspeed*drehMoment; // Trägheitstensor vernachlässigt
  11.  
  12.    ModelMat = glm::translate(ModelMatFloater, ...//klappt wunderbar
  13.  
  14.    euA += velAngles;
  15.  
  16.    // Hier kommt der kritische Part, denke ich...
  17.  
  18.    // Rotation Variante 1(Euler)
  19.    ModelMat *= glm::eulerYXZ(euA.y, euA.x, euA.z);  // klappt ne Weile
  20.  
  21.   // Rotation Variante 2 (Quaternion)
  22.    ModelMat *= glm::rotate(ModelMat, length(euA), normalize(euA)); //klappt auch nur ne Weile
  23.  
  24.  

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotation starrer Körper
BeitragVerfasst: Fr Mai 29, 2015 14:39 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Lord Horazont hat geschrieben:
Generell werden deine Rotationen durch den Massenschwerpunkt gehen, sodass du wirklich nur die Richtung der Achse und den Winkel brauchst. Alles andere führt ja zu einer Rotation um den Massenschwerpunkt und einer Translation...


Gerade hier hab ich glaub ich grad nen Denkfehler.
Ich versteh nicht, wie man mit einer Achse und einem Winkel überhaupt Rotationen starrer Körper vernünftig beschreiben soll, die können sich doch um mehrere Achsen gleichzeitig drehen.
Bin mir grad nicht sicher, aber ich glaube die Rotation von nem starrern Körper kann durch Rotationen um die Hauptträgheitsachsen beschrieben werden.
Nur den Massenschwerpunkt zu berücksichtigen reicht glaub ich nicht aus, zumindest nicht für Körper mit verschiedenen Hauptträgheitsmomenten.

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotation starrer Körper
BeitragVerfasst: Sa Mai 30, 2015 12:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Nun, wie in dem verlinkten Artikel beschrieben kann man eine Rotation um mehrere Achsen als eine Rotation um eine bestimmte Achse beschreiben. Diese Achse geht bei starren Körpern immer durch den Massenschwerpunkt.

Allerdings ist die Achse nicht unbedingt konstant, sondern variiert je nach dem wie der Drehimpuls ausgerichtet ist auch ohne Einwirkung weiterer Kräfte, siehe Nutation (der Deutsche Artikel ist leider recht schlecht, was Anschaulichkeit betrifft). Das hat aber nichts mit Rotation um mehrere Achsen gleichzeitig zu tun, die kann man wie gesagt abbilden, indem man um die Euler-Achse rotiert.

viele Grüße,
Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotation starrer Körper
BeitragVerfasst: So Mai 31, 2015 08:34 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Danke Horazont.
Mein Denkfehler war folgender:
Ich dachte der Winkelgeschwindigkeitsvektor wäre immer proportional zum Drehimpulsvektor (komponentenweise).
Das ist aber nur für Sonderfälle so.
Da mir zudem noch bewußt war, dass der Drehimpuls eine Erhaltungsgröße ist, sich also nur durch zugeführtes Drehmoment ändert, kam mit das ganze seltsam vor.
Unter folgendem Link sind die relevanten Formeln dazu zu finden:
http://de.wikipedia.org/wiki/Eulersche_ ... theorie%29

Grüße,
Vinz

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotation starrer Körper
BeitragVerfasst: Mo Jun 01, 2015 09:29 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Willkommen in der schönen Welt der theoretischen Mechanik (Physik, 2. Semester).

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Rotation starrer Körper
BeitragVerfasst: Mo Jun 01, 2015 12:04 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Ich muss peinlicherweise zugeben, dass ich die auch gehört hab, Mut zur Lücke rächt sich Jahre später :mrgreen:

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Mathematik-Forum


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.040s | 17 Queries | GZIP : On ]