2011-08-10 15 views
-1

J'ai trois points dans l'espace 3D A, B, C. Les points ne sont pas colinéaires. Je souhaite trier les points de telle sorte que si je les traverse, je traverserais le triangle ABC dans l'ordre trigonométrique (sens inverse des aiguilles d'une montre).Tri des points dans l'ordre trigonométrique dans l'espace 3D

+7

Cela n'a aucun sens. –

+0

@Alexandre C. pourquoi exactement? Il y a plusieurs solutions, mais je ne vois pas pourquoi cela n'a pas de sens. –

+1

@static_rtti: Vous avez besoin de 4 points pour donner du sens à la phrase, même à distance (pour définir une orientation). C'est comme si vous demandiez de parcourir 2 points dans le plan en ordre trigonométrique. –

Répondre

0

Puisque vous n'avez que 6 commandes possibles, j'opterais pour l'approche de la force brute: pour chaque commande, vérifiez si elle satisfait votre contrainte, et si c'est le cas, choisissez-la.

+0

Le problème est que je ne sais pas comment vérifier ma contrainte. – hadesgames

+3

C'est parce que votre contrainte n'est pas bien définie; voir les commentaires d'Alexandre. –

2

Vous devez définir le côté du triangle que vous regardez. L'ordre qui est dans le sens inverse des aiguilles d'une montre (CCW) sera dans le sens des aiguilles d'une montre (CW) vu de l'autre côté du triangle.

Vous pouvez choisir n'importe quel ordre ABC et ensuite calculer le produit croisé (A-C) x (B-C) qui vous donnera un vecteur normal au plan du triangle. La direction vers laquelle il pointe (vers le haut ou vers le bas) dépend de la commande que vous avez choisie. Si c'est la mauvaise commande, vous pouvez inverser votre commande ou échanger deux points.

La clé est de savoir de quel côté vous allez le voir avant de parler de direction.

Questions connexes