Jump to content

Empfohlene Beiträge

Geschrieben

Hallo,

ich probiere diese frage mal hier. Moeglicherweise etwas breiteres publikum als in "Externe Schnittstelle", und ist ja auch allgemeiner.

image.jpeg.1a80aa289a10d204ff62981e3f7c3083.jpeg

Gegeben sein ein kreisbogen (kein greisbogen :) ) als teil eines kreises mit radius r im 3d raum, mit den Euler-koordinaten 
p1 =(x1,y1,z1). Wir nehmen an dass w = 1 ist und das quaternion ist qu1 ={x1',y1',z1',1}, transformiert von den Euler-koordinaten . Wie berechne ich die transformationsmatrix qt, die den punkt p1 nach p2 = {x2,y2,z2} verschiebt und die ebene (gruen) parallel zum einheitsvektor r dreht. In 2D ist das einfach, in 3D habe ich problem die richtige matrizenoperationen zu finden. Ich verwende eine umfangreiche library, also operationen sind nicht das problem. Der ansatz fehlt mir. Man kann das problem ja zerlegen in transformation und rotation, so habe ich das in 2D mit einfachen winkelfunktionen geloest. 

Jede 3D engine tut das mit transform.around , aber ich habe keine ahnung mehr wie ich transform.around mit quaternions ausdruecke. Das war erstes semester mate und ist sehr lange her. Im web ist nichts konkretes zu finden, nur allgemeiner kram zu den grundlage und 3d engines, die das problem erledigen. 

Waere toll einen hinweis zu bekommen. 
Danks
Gmd



 

Geschrieben (bearbeitet)

sorry, das sind genau solche seiten die "mir" bei diesem fall nicht helfen. Davon habe ich viele angeschaut. Aber danke fuer die antwort. 

Gruss
Gmd

 

Bearbeitet von gmd
Geschrieben

Hallo gmd,

mit Quaternions kannst du nur Drehungen beschreiben, keine Translationen. Ein "transform.around" arbeitet daher mehrstufig. Bilde z.B. einen Vektor von Punkt P1 zum Zentrum (dein Radialvektor). Diesen Vektor kannst du nun mit einer Quaternion drehen. Anschließend addierst du den gedrehten Vektor zum Zentrum hinzu und erhältst deinen finalen Punkt.

Möchtest du lieber mit Matrizen arbeiten, musst du zwei Matrizen aufbauen und miteinander multiplizieren. Zunächst brauchst du eine Translationsmatrix entlang deines r, anschließend eine Rotationsmatrix. Multipliziere beide (auf die Reihenfolge achten) und du erhältst eine Matrix, mit der du beliebige Punkte entlang deines Kreisbogens transformieren kannst.

Viele Grüße,

Neo

Geschrieben

Danke Neo,
Ist ja sort of dein taeglich brot .. lol .. 
Letzteres ist worauf ich aus bin. Matrix operationen sind mit meiner library simple, man muss "nur" die matrizen formulieren. Ich muss mal frueher anfangen, abends wird mein hirn immer besonders langsam und ich ungeduldig.. :) insbesondere wenn man noch soviele andere ideen im kopf hat. 
Gruss
Gmd
 

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...