\require{AMSmath}
WisFaq - de digitale vraagbaak voor wiskunde en wiskunde onderwijs


Printen

Rotatie zoeken

Beste

Ik ben bezig met grafen matchen mijn bachelorproef. Deze kunnen geroteerd staan ten opzichte van elkaar. Ik weet welke coördinaten van de ene graaf overeenkomen met welke coördinaten van de andere graaf. Ik ben hiervoor een programma aan het schrijven in C++.
Ik kan dus bijvoorbeeld twee punten kiezen; een van de eerste en een van de tweede dat overeenkomt met dat van de eerste. Nu zoek ik hoeveel graden de tweede dan geroteerd is en over welke as.
Ik heb al gekeken naar de axis-angle methode, maar bij het narekenen bleek dit niet te kloppen.

Femke
Student Hoger Onderwijs België - vrijdag 18 mei 2012

Antwoord

Hallo Femke,

Uit jouw vraag wordt mij niet helemaal duidelijk met welk probleem je nu zit. Als ik het goed begrijp, heb je een set punten waarvan de coördinaten ten opzichte van elkaar een vaste positie hebben (zoals stippen op een voetbal). Dit geheel (de voetbal dus) gaat van een oude positie naar een nieuwe positie. De coördinaten van deze stippen zijn bekend, zowel in de oude als in de nieuwe positie. Nu wil je de verplaatsing van deze voetbal wiskundig beschrijven. Is dit de juiste interpretatie van jouw probleem?

Zo'n verplaatsing kan worden beschreven als een translatie volgens een vector, gecombineerd met een rotatie rond deze vector, ik neem aan dat je dit bedoelt met de axis-angle methode. Dit is op zich een prettige methode om zo'n verplaatsing te beschrijven: je hebt bijvoorbeeld niet het volgorde-probleem dat optreedt wanneer je afzonderlijke rotaties rond x-, y- en z-as zou beschrijven.

Deze methode heeft zijn bestaansrecht wel bewezen. Wanneer jouw berekeningen niet kloppen, zit er kennelijk nog een fout in jouw computerprogramma. Ik kan niet beoordelen of je het juiste algoritme gebruikt. Heb je er bijvoorbeeld rekening mee gehouden dat coördinaten waarschijnlijk afgeronde getallen zijn? Hierdoor is de onderlinge positie niet mathematisch exact constant. Je kunt dus niet 'zomaar' de verplaatsing van twee of drie punten berekenen en dan 'hopen' dat de overige punten volgens dezelfde beweging op de nieuwe positie terechtkomen. Je zult een translatie+rotatie moeten berekenen die zo goed mogelijk past bij de verplaatsing van alle punten gezamenlijk.

Ik weet niet of jouw algoritme klopt, het zou voor ons ook te ver gaan om een eventuele fout in het programma op te sporen. Ik heb wel een verwijzing voor je naar een artikel waarin deze procedure stap voor stap beschreven wordt. Dit artikel is:

Rigid body motion calculated from spatial co-ordinates of markers
Journal of Biomechanics, Volume 13, Issue 4, 1980, Pages 391-393
C.W. Spoor, F.E. Veldpaus

Hopelijk kom je hiermee verder, het is best een klus om hiervoor een goed programma te schrijven!


vrijdag 18 mei 2012

©2001-2024 WisFaq