Martok - Do 12.02.15 18:22
Titel: Matrizen "anfitten"
Moin!
Für ein Projekt muss ich auch 6 Punkten in den jeweiligen Raumrichtungen (+X,-X,+Y,-Y,+Z,-Z) ein lokales Rechte-Hand-Koordinatensystem konstruieren. Dazu gibt es bekanntermaßen 48 Lösungen, ich suche die mit der geringsten Rotation gegenüber einem Referenzsystem, sollten 2 gleich gut sein, dann das, dessen (1,1,1)-Vektor im positiven Oktanten des Referenzsystems liegt. (
Beispiel [
http://www.ebsd.com/popup/images/explained/fig41_1.jpg])
Mein aktuelles Vorgehen sieht so aus:
Quelltext
1: 2: 3: 4:
| Aus der Menge der Nachbarn N, Mittelpunkt C: finden: kleinster winkel (C->N) zu (1,0,0), speichern als "A" finden: kleinster winkel (C->N) zu (0,1,0), welcher senkrecht auf (C->"A") steht, speichern als"B" (0,0,1) ist dann "A" x "B" (Überprüfung: da muss auch ein N sein) |
Funktioniert sehr gut, aber wenn eine Achse genau 45° gedreht ist gibt es immer 2 gleich gute Lösungen für die betreffende Richtung, nämlich mit +45 und -45° (was als Winkel zwischen Vektoren beides 45° ergibt, da ist das Problem). Da werfe ich im Moment mit Sonderfallbehandlungen drauf, aber das kanns nicht so ganz sein.
Das könnte man einfacher machen, wenn ich aus den 3 Vektoren direkt eine Matrix konstruiere und dann die Eulerwinkel zwischen der Referenzmatrix und der neuen Matrix bestimme (also: "wie müsste ich das rotieren, um das ermittelte zu bekommen?") und diese minimiere. Sind ja nur 48, das ist von der Rechenzeit nicht so schlimm.
Erschwerend kommt hinzu, dass meine Deformation keine reine Rotation ist, sondern geringe Scher- und Stauchkomponenten enthält. Das Koordinatensystem wird also nicht exakt Orthogonal sein, aber definitiv in >85°.
Hat da jemand eine clevere Idee?
Viele Grüße,
Sebastian
Martok - Fr 13.02.15 18:32
Jup, das ist exakt so wie ich es aktuell hab. Jede Achse einzeln wird so zusammengefummelt, siehe erster Beitrag. Den Code findet man jetzt
auch im git [
https://github.com/martok/mklattice/blob/daad8ad91747d85b78c4b51099ea0af5c901cff8/oim.lpr#L97].
Das Problem ist Konsistenz, die wolle ich dadurch erreichen dass ich das komplette System am Stück baue. Im Endeffekt brauche ich zwingend eine bestimmte Ausrichtungsart, weil sonst die nachfolgende stereografische Projektion an der falschen Stelle rauskommt. Moment. Mit diesem Satz könnte ich glaube ich zumindest die Anforderungen besser beschreiben. Das muss ich mal durchrechnen.