| |||||
| Dernière réponse | |
|---|---|
| Sujet : [Math] Comment savoir si un point se trouve dans un triangle? | |
| Alload | Je fais ça pour savoir quels triangles d'une scène 3D sont dans le champ d'action d'une lumière ponctuelle. |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| Alload | Je fais ça pour savoir quels triangles d'une scène 3D sont dans le champ d'action d'une lumière ponctuelle. |
| slvn | 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 ?? |
| Alload | 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 |
| Alload |
Ca ne marche pas si l'on considère que la sphère est pleine, oubien? |
| slvn | t as tenté ce que je te proposait comme methode ?!
3D -> 2D -> droite -> segment -> disjonction de cas |
| Alload | J'ai fais un édit du premier post pour spécifier que le triangle et la sphère sont pleins. |
| Xavier_OM | sinon newsgroup ; fr.sci.maths ;) |
| slvn | héhé c vrai que c trompeur quand meme :d |
| Caedes |
|
| slvn | 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 |
| Caedes |
|
| slvn | si si je t assure, c est bien un cercle ;) |
| Caedes |
|
| slvn | 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. |
| Xavier_OM |
|
| Alload |
Tu connais un moyen de chercher l'intersection en math pure? Tu pourrais donner la méthode? |
| Xavier_OM | 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 |
| Alload | 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. |
| slvn | 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. |
| Alload | 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? |
| Xavier_OM | "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 |
| Alload |
Un triangle plein. |
| slvn | quan "tu veux savoir si ton trianlge intersect une sphere", tu parle d'un triangle plein ou pas plein ? |
| Alload | 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. |
| airseb | dans le red book, annexe F, ils parlent de l'intersection d'un point et d'un plan, ça te convient ? |
| Alload | 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? |




