2009-07-29 16 views
1

J'ai une liste de sommets 3D, créant un polygone. Je dois le trianguler et j'utilise l'algorithme des oreilles coupantes. Mes polygones sont non-convexes, donc j'ai besoin de trouver les angles concaves dans le polygone. Je ne aussi connaître l'orientation de Wich sont mes polygones (à droite ou à clocwise)Déterminer l'ordre du polygone 3D

Quelqu'un pourrait-il me aider comment déterminer si est dans le sens horaire ou anti-horaire

Merci

+0

dans le sens des aiguilles d'une montre ou dans le sens contraire des aiguilles d'une montre dépend du côté du polygone, ce n'est pas absolu en 3D, je pense – fortran

+0

Utilisez-vous une bibliothèque (comme OpenGL)? Si oui, vous pouvez utiliser quelque chose comme GLUtesselator. Cela s'adaptera facilement même aux polygones non-convexes si vous en avez besoin. – Tarydon

Répondre

1

Il est probablement plus simple de projeter le polygone dans un plan approprié (disons z = 0), puis d'utiliser une méthode comme Reinier.

1) Définissez tous z = 0. Cela ne changera pas la réponse.

2) Utilisez une méthode comme Reinier ou this one pour déterminer si le polygone est dans le sens horaire ou antihoraire, et donc si les produits croisés "devraient être" + z ou -z.

3) Tout sommet avec un produit croisé qui pointe dans la «mauvaise» direction est concave.

+0

Presque correct, sauf que nous devons vérifier que le polygone n'est pas dans un plan perpendiculaire au plan XY (dans ce cas, mettre tout z à 0 le dégénèrera en une ligne). – Tarydon