[Math] Comment savoir si un point se trouve dans un triangle?

Comment savoir si un point se trouve dans un triangle? [Math] - Programmation

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
Reply

Marsh Posté le 06-07-2002 à 23:46:49   

Reply

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 ?


Message édité par airseb le 07-07-2002 à 02:48:17
Reply

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.

Reply

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 ?

Reply

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.

Reply

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


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

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?

Reply

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.

Reply

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.

Reply

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


Message édité par Xavier_OM le 07-07-2002 à 11:36:00

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 07-07-2002 à 11:33:28   

Reply

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?

Reply

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.


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

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.


Message édité par slvn le 07-07-2002 à 11:42:42
Reply

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

Reply

Marsh Posté le 07-07-2002 à 11:55:35    

si si je t assure, c est bien un cercle ;)

Reply

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)


Message édité par Caedes le 07-07-2002 à 11:58:24
Reply

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

Reply

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...  :jap:
 
 
edit : et en plus je suis grillé... :D


Message édité par Caedes le 07-07-2002 à 12:01:41
Reply

Marsh Posté le 07-07-2002 à 12:02:51    

héhé c vrai que c trompeur quand meme :d

Reply

Marsh Posté le 07-07-2002 à 12:04:37    

sinon newsgroup ; fr.sci.maths  ;)  


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

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.

Reply

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

Reply

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?

Reply

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 :D

Reply

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 ??

Reply

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.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed