Comment savoir si un point se trouve dans un triangle? [Math] - Programmation
Marsh Posté le 07-07-2002 à 02:47:56
dans le red book, annexe F, ils parlent de l'intersection d'un point et d'un plan, ça te convient ?
Marsh Posté le 07-07-2002 à 09:17:30
En fait, quand j'y ai réfléchi hier soir avant de dormir je me suis rendu compte que ma méthode ne marchait pas du tout: même si le point du plan que forme le triangle se trouve à l'intérieur de la sphère, cela ne veut pas dire que le triangle s'y trouve.
Je vais chercher un peu sur le net.
Marsh Posté le 07-07-2002 à 11:13:47
quan "tu veux savoir si ton trianlge intersect une sphere", tu parle d'un triangle plein ou pas plein ?
Marsh Posté le 07-07-2002 à 11:14:24
slvn a écrit a écrit : quan "tu veux savoir si ton trianlge intersect une sphere", tu parle d'un triangle plein ou pas plein ? |
Un triangle plein.
Marsh Posté le 07-07-2002 à 11:17:37
"Comme nous savons que le chemin le plus court entre le triangle et le centre de la sphère passe par une droite colinéaire à un vecteur normal au plan que forme le triangle"
pas forcément, ca dépend de où se trouve ta sphère. Si on imagine qu'elle est "en dessous" ou "au dessus d'un triangle "vertical" (c'est affreusement non mathématique mais je pense être clair), et bien le "chemin le plus court" passe par une droite vectorielle apartenant au plan engendré par le triangle. Elle est donc orthogonal au vecteur normal au triangle.
Pour déterminer si un point appartient à un triangle, il faut vérifier trois inégalités par rapport aux trois cotés.
Ex pour un triangle equilatéral ABC, A sommet en haut, B-C la base en bas, de gauche à droite : il faut que les coordonnées du point vérifient : > equation_de_droite_de_BC et <equation_de_droite_de_AB et <equation_de_droite_de_AC
Marsh Posté le 07-07-2002 à 11:23:37
Xavier_OM > d'accord pour tes inégalités, mais c'est pas faisable car il y a une infinité de point à tester à l'intérieur de la sphère. Non?
Marsh Posté le 07-07-2002 à 11:27:07
a ta place, je commencerai pas faire :
intersection de la sphere et du plan contenant le triange.
(calcul de la distance centre_sphere & plan )
et s il y a intersection, t es ramené a un pb en 2 D.
Marsh Posté le 07-07-2002 à 11:29:53
slvn > donc on teste l'intersection du plan que forme le triangle et de la sphère.
Si pas d'intersection -> le triangle ne se trouve pas dans la sphère.
Si intersection -> on peut se place dans le plan que forme le triangle, on peut trouver le cercle que décrit la sphère sur ce plan. Mais ensuite tester le triangle et ce cercle redonne le même problème qu'avec la sphère, à savoir que le test des trois sommets de suffit pas.
Marsh Posté le 07-07-2002 à 11:33:28
c'est vrai que pour le coup c'est pas évident. En maths c'est simple, on cherche l'intersection et puis c'est bon, mais pour programmer une procédure de test je sais pas trop (je suis ni prof de maths ni programmeur)
une fois en 2D, ton cercle peut etre :
soit dans le triangle complétement
soit tangeant a un ou plusieur coté
soit à l'exterieur mais secant a un ou plusieurs cote
soit totalement a coté.
Donc il faut tester la position du centre du cercle par rapport au centre du triangle, puis voir avec le rayon de ce cercle
Marsh Posté le 07-07-2002 à 11:35:07
Xavier_OM a écrit a écrit : c'est vrai que pour le coup c'est pas évident. En maths c'est simple, on cherche l'intersection et puis c'est bon, mais pour programmer une procédure de test je sais pas trop (je suis ni prof de maths ni programmeur) |
Tu connais un moyen de chercher l'intersection en math pure? Tu pourrais donner la méthode?
Marsh Posté le 07-07-2002 à 11:39:10
Alload a écrit a écrit : Tu connais un moyen de chercher l'intersection en math pure? Tu pourrais donner la méthode? |
ben mathématiquement pour une sphère on chercherait les points du plan engendré par le triangle qui vérifient l'équation de la sphère. Pour une sphère pleine ca doit exister aussi je pense.
Marsh Posté le 07-07-2002 à 11:42:05
dnas le plan, disque / triangle, c est deja + simple,
tu peux commencer par regarder si les droites qui portent les segments, coupent le cercle.
ensuite si les segment eux meme coupent le cercle.(-> la tu peut determiner les pts d intersection)
enfin tu termine par une disjonction de cas pour determiner l'intersection totale.
Marsh Posté le 07-07-2002 à 11:50:45
Alload a écrit a écrit : slvn > donc on teste l'intersection du plan que forme le triangle et de la sphère. Si pas d'intersection -> le triangle ne se trouve pas dans la sphère. Si intersection -> on peut se place dans le plan que forme le triangle, on peut trouver le cercle que décrit la sphère sur ce plan. Mais ensuite tester le triangle et ce cercle redonne le même problème qu'avec la sphère, à savoir que le test des trois sommets de suffit pas. |
Je ne suis pas certain que le résultat en 2D donne une intersection entre un triangle et un cercle. Plutot entre un triangle et une ellipse.
Pose ta question là bas :
http://www.forum.math.ulg.ac.be/cg [...] ea=Gomtrie
Marsh Posté le 07-07-2002 à 11:57:53
slvn a écrit a écrit : si si je t assure, c est bien un cercle |
Si le plan passe par le centre de la sphère oui, Si un vecteur normal au plan engendré par le triangle passe par le ceontre du cercle oui , mais dans un cas quelconque, hmmm...
(edit : faute d'écriture)
Marsh Posté le 07-07-2002 à 12:00:34
y pas de cas qcq,
car y a toujours un vecteur normal au plan engendré par le triangle qui passe par le centre du cercle
Marsh Posté le 07-07-2002 à 12:00:58
Caedes a écrit a écrit : Si le plan passe par le centre de la sphère oui, Si un vecteur normal au plan engendré par le triangle passe par le ceontre du cercle oui , mais dans un cas quelconque, hmmm... (edit : faute d'écriture) |
Apres plus de réflexion ca sera toujours le cas, autant pour moi...
edit : et en plus je suis grillé...
Marsh Posté le 07-07-2002 à 12:04:37
sinon newsgroup ; fr.sci.maths
Marsh Posté le 07-07-2002 à 12:25:15
J'ai fais un édit du premier post pour spécifier que le triangle et la sphère sont pleins.
Marsh Posté le 07-07-2002 à 14:31:05
t as tenté ce que je te proposait comme methode ?!
3D -> 2D -> droite -> segment -> disjonction de cas
Marsh Posté le 07-07-2002 à 14:37:29
slvn a écrit a écrit : t as tenté ce que je te proposait comme methode ?! 3D -> 2D -> droite -> segment -> disjonction de cas |
Ca ne marche pas si l'on considère que la sphère est pleine, oubien?
Marsh Posté le 07-07-2002 à 15:54:16
Je viens de trouver dans un de mes bouquins de prog graphique un paragraphe qui dit comment calculer la distance entre un point et un triangle. Si j'arrive à comprend alors ce sera facile de savoir si le triangle est dans la sphère ou non.
Je vous tiens au courant, mais va déjà falloir que je comprenne le bouquin
Marsh Posté le 07-07-2002 à 15:56:13
cune fois que t intersect sphere et plan,
t obtient un disque et un trianlge (les deux pleins)
et la tu traite les intersections cote du triangle/disque
au final, t aura un "bout de plan qui risque de contenir des parties "circulaire" de d'autre rectiligne..."
simplem question, tu fais quoi comme truc pour avoir besoin de calculer ca ??
Marsh Posté le 07-07-2002 à 16:12:55
Je fais ça pour savoir quels triangles d'une scène 3D sont dans le champ d'action d'une lumière ponctuelle.
Marsh Posté le 06-07-2002 à 23:46:49
J'ai besoin de savoir si un triangle PLEIN intersecte une sphère PLEINE. Afin de faire ça, je me suis rappelé mes exos de maths de Terminale où l'on déterminait la projection orthogonale d'un point sur un plan.
Comme nous savons que le chemin le plus court entre le triangle et le centre de la sphère passe par une droite colinéaire à un vecteur normal au plan que forme le triangle, nous pouvons calculer une équation paramétrique de cette droite:
vecteur d = centre de la sphère + k * une normale du triangle
Ensuite nous calculons l'équation du plan que forme le triangle, et il est ensuite trivial de déterminer les coordonnées du point d'intersection de la droite et du plan.
Par contre, maintenant ça se complique vu que je n'ai pas de cours là-dessus: comment peut-on savoir si le point d'intersection se trouve à l'intérieur du triangle ou non?
Message édité par Alload le 07-07-2002 à 12:24:35