2011-06-21 5 views
0

Je cherche à faire pivoter un nuage de points 3D en fonction de l'orientation du sol. J'ai détecté le sol et calculé son vecteur normal. Je veux utiliser ce vecteur normal pour m'assurer que tous les points du sol ont la même valeur y. Puisque le produit scalaire de deux vecteurs normalisés est le cosinus de l'angle entre eux, je normalise d'abord le vecteur normal courant (0.856, 0.958, 2.58) ainsi que le vecteur normal désiré (0.0, 0.958, 0.0). Le produit scalaire = 0,917 et donc l'angle = 70,586, mais étant en 3 dimensions ceci ne semble pas utile. Dois-je effectuer deux rotations? Si oui, y a-t-il des suggestions quant à la meilleure approche?Rotation d'un nuage de points basé sur un vecteur normal

Répondre

0

Si vous voulez une rotation qui va transformer un vecteur normal A en un vecteur normal désiré A', il y en a un nombre infini. (Avec une telle rotation, vous pouvez l'appliquer et la composer avec des spins autour de A' pour obtenir beaucoup d'autres rotations qui font la même chose.)

Une approche qui fonctionne bien en 3-D est de calculer vecteur de produit V = A x A' (qui est normal au plan contenant A et A'), puis tourner autour de V de l'angle entre A et A'. (Il est important de tester d'abord que A et A' ne coïncident pas déjà.)

Vous trouverez une description de la façon de le faire assez efficacement here.

+0

Merci! Je veux bien essayer – RDL

Questions connexes