Voila, j'ai deux triangles dans l'espace, et je voudrais savoir qui est devant l'autre par rapport a une camera dans l'espace ...
Merci d'avance, :P
Frederic :wink:
Version imprimable
Voila, j'ai deux triangles dans l'espace, et je voudrais savoir qui est devant l'autre par rapport a une camera dans l'espace ...
Merci d'avance, :P
Frederic :wink:
J'ai jamais travaille sur un algorithme relatif au 3D donc ma reponse n'est peut ertre pas adequate. Cependant je pense qu'a chaque point P de ton espace st associees 3 coordonnees (Px,Py,Pz). Dans ces conditions si Z represente l'axe de ta camera alors le 6-uplet (P1z,P2z,P3z,P4z,P5z,P6z ) peut etre util. En effet selon l'orientation de la camera, le triangle auquel appartien Min(P1z,P2z,P3z,P4z,P5z,P6z ) repectivement Max(P1z,P2z,P3z,P4z,P5z,P6z ) est le triangle devant (rep derriere ) l'autre. C'est une maniere de voir le probleme. On peut aussi cosiderderer les cotes de chaque triangle et leur associer une moyenn par rapport a Z puis en deduire le plus petit (rep le plus grand) des Zi. a toi de voir...
Cia!
Merci...je vais voir ce que je peux faire...
Une autre question:
Comment savoir si une droite coupe un plan, le tout dans l'espace ? :roll:
Merci d'avance :P
Frederic :wink:
Salut,
ceci ressemble terriblement a un devoir de maison (3em , 2nde ???)Citation:
Comment savoir si une droite coupe un plan, le tout dans l'espace ?
allons y quand meme:
Soient O l'origine de ton espace et d la droite qui partant de O coupe perpendiculairement ton plan en un point P1. La distance OP1 est une characteristique de ton plan dans l'espace: c'est le produit scalaire de deux vecteurs bien definis de ton espace.
Soit g la droite dont tu veux determiner l'intersection par rapport a ton plan; Considerons un vecteur a partant de O et qui coupe d en un point M qlc. Soient en fin I un suppose point d'intersection entre d et le plan; Xo = OI et MI = To.MI .
On demontre que l'equation de d peut se mettre sous la forme : X = a +T.MI et que OP1 = OP1 .X.
Si d coupe ton plan alors il exit un reel To tel que :
To=( OP1-OP1.a ) / ( OP1 . MI ).
Pour conclure:
Si tu veux simplement savoir s'il existe un point d'intersection entre ta droite et le plan, il suiffira de montrer qu'il exist deux points M et I sur d tels que OP1 . MI<> 0 ( ie la droite n'est pas parallele au plan. M et I st deux pts qlc de d. )
La determination de I est plus Complexe:
Les coodonnees de I sont donnees par la relation OI = OM+To.MI
PS
I)
qlq precisions sur la notation:
1) To --> lire T-zero (de mm pour Xo)
2) Les lettres soulignees representent des vecteurs. Ainsi X = vecteur X et OI = vecteur O I.
3) OM . X = Produit scalaire du vecteur OM par le vecteur X (= |OM| . |X| . cos(OM , X ) )
II)
Je suis conscient du fait que ceci ne represente pas un algorithme mais j'espere avoir repondu a ta question . ;-)
Cia!
Merci beaucoup...
Ne t'inquietes pas, ce n'est pas un devoir de maths. :wink: .. mais j'essaye juste de reprogrammer OpenGL, pour ajouter des fonctions differentes, changer quelques petites choses... et je suis pas forcement doue en maths... :oops: ... mais j'avance...
Frederic :wink:
Salut Frederic,
ton projet doit etre tres passionant je suppose
rassure-toi moi non plus ... et l'essentiel c'est justement d'avancer.Citation:
et je suis pas forcement doue en maths... ... mais j'avance...
J 'avais quelques Libairies de geometrie que je n' arrive malheureusement pas a retrouver...
Si je retrouve qlc d'util je t' informe.
regardes ici (histoire d'y glanner qlq iddes au besoin.. )
[ C]
http://astronomy.swin.edu.au/~pbourke/geometry/
==> Descriptions + Algorithmes de qlq methodes geometriques (on y trouve entre autre des Variantes de la solution du probleme de l'intersection Plan- ligne . )
[Pascale]
http://homepages.borland.com/efg2lab/Library/Delphi/Graphics/WilliamEgge_EMath.txt
==> un Math unit ; on y trouve quelques fonctions qui peuvent etre utiles : Produit scalaire, calcul d'angle et bien autres
http://homepages.borland.com/efg2lab/Library/Delphi/Graphics/GraphicsMathLibrary.PAS.TXT
http://homepages.borland.com/efg2lab/Library/Delphi/Graphics/GraphicsPrimitivesLibrary.PAS.TXT
==> qlc de senblable
Bonne chance et Cia!
Sarbacane;
le problème des triangles par rapport à la caméra n'est pas évident : en effet il est possible que les deux triangles se coupent ! (intersection = segement ou polygone).
En général on prend la moyenne des distances de chaque sommet du traingle à la caméra, pour chaque triangle, et on compare.
Ca c valable pour des approximations internes. Si c pour de l'affichage, il vaut mieux utiliser un Z-buffer.