Hallo,
angenommen ich habe einen starren Körper, der über >3 Punkte definiert ist.
Angenommen, ich kenne die Positionen dieser >3 Punkte zu 2 Zeitpunkten und diese unterscheiden sich.
Gibt es innerhalb von FreeCAD (insbesondere auf C++-Ebene) eine Methode an die Translation und Rotation zu kommen?
Ich weiß, dass es innerhalb von VTK (mindestens) einen ICP Algorithmus gibt, würde aber gerne darauf verzichten so "tief" zu graben...
SOLVED: Bestimmung der Transformation eines starren Körpers
SOLVED: Bestimmung der Transformation eines starren Körpers
Last edited by ConneR on Wed Feb 13, 2019 1:15 pm, edited 1 time in total.
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Bestimmung der Transformation eines starren Körpers
Du kannst aus den 3 Punkten einen vierten bilden, welche dann ein Koordinatensystem bilden: p2-p1, p3-p1 (p2-p1).cross(p3-p1)
Die 9 Koordianten von diesen Punktenb schreibst du in ein FreeCAD.Rotation Objekt. Damit hast du die Drehung, die Verschiebung ist einfach p1.
Die 9 Koordianten von diesen Punktenb schreibst du in ein FreeCAD.Rotation Objekt. Damit hast du die Drehung, die Verschiebung ist einfach p1.
Re: Bestimmung der Transformation eines starren Körpers
Habe mittlerweile die Lösung via vtkLandmarkTransform implementiert - bietet den Vorteil, dass (wie in meiner Anwendung nötig) ggf auch mehr als 3 Punkte als 'Landmarks' genutzt werden können.
Dennoch vielen Dank für den Hinweis!
Dennoch vielen Dank für den Hinweis!