11
votes

Triangle Triangle Intersection dans l'espace 3D

Je travaille avec une géométrie 3D. J'ai besoin de trouver l'intersection du triangle avec un autre triangle.

Quel algorithme pourrais-je utiliser?


3 Réponses :


5
votes

Ce document décrit une implémentation:

http://knight.temple.edu/~lakaempper/ Cours / CIS350_2004 / etc / Moeller_triangle.pdf

Notez qu'il existe différentes techniques, selon que vous souhaitiez connaître le point / segment où l'intersection s'est produite ou indiquez simplement si un intersect est arrivé. Ce document vous donnera le segment de ligne représentant l'intersection.


0 commentaires


10
votes

Beaucoup de gens s'appuient apparemment sur une implémentation ( Lien vers le code source ) de la méthode décrite en 2006 dans le document suivant ( Lien vers PDF ):

TROPP, OREN, AYELLET TAL et ILAN Shimshoni. "Un triangle rapide à Test d'intersection de triangle pour la détection de collision. "Ordinateur Animation et mondes virtuels 17.5 (2006): 527-535.

Il existe cependant un problème avec ce code (à l'exception de l'adoption d'un ancien style de programmation, en utilisant des notations non conventionnelles et de perdre l'interprétation géométrique sous-jacente): "chose déterminante" ne rend pas nécessairement plus robuste, si fait de la mauvaise voie.

Je suggère d'utiliser la méthode de Moeller ( Lien vers pdf ) ou jeter un oeil au papier de Delliver ( Lien vers pdf) , implémenté dans la bibliothèque CGAL ( lien , "trianggle_3_triangle_3_do_intersect.h"). < / p>

un exemple : la routine d'intersection implémentée ci-dessus indique que les triangles (P0, P1, P2) et (q0, q1, q2) définis par les points suivants < Pré> xxx

est pas intersection. Voici une image des triangles:

triangles intersecting

Et voici le code de code (ajouter au code d'origine): xxx

une note finale sur le nombre d'opérations arithmétiques: car la méthode prend en entrée vecteurs de bord pré-calculé, 12 +/- Les opérations doivent être ajoutées au tableau I. du papier.

dernier mais non le moindre: veuillez vérifier ce que j'écris à vous-même et donnez-moi des commentaires si vous pensez que j'ai mal compris quelque chose! < / p>


1 commentaires

Je viens de trouver ce code, pourrait être utile pour une personne à la recherche d'une solution rapide et déjà mise en œuvre de la méthode Delliver: RAW.GITUBUSERContent.com/erich666/jgt-code/master/volume_08 / ...