Jump to content

3D raum kalkulation


gmd

Recommended Posts

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



 

Link to comment
Share on other sites

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

 

Edited by gmd
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...