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,![]()
Frederic![]()
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,![]()
Frederic![]()
Delphi 6Win 98
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 ?![]()
Merci d'avance![]()
Frederic![]()
Delphi 6Win 98
Salut,
ceci ressemble terriblement a un devoir de maison (3em , 2nde ???)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... mais j'essaye juste de reprogrammer OpenGL, pour ajouter des fonctions differentes, changer quelques petites choses... et je suis pas forcement doue en maths...
... mais j'avance...
Frederic![]()
Delphi 6Win 98
Salut Frederic,
ton projet doit etre tres passionant je suppose
rassure-toi moi non plus ... et l'essentiel c'est justement d'avancer.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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager