Detecter collisions ds un monde en 3d

Signaler
Messages postés
241
Date d'inscription
dimanche 10 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
-
Messages postés
17
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
26 février 2005
-
salut a ts

voila je travail en ce momment sur un projet de monde en 3d .
je suis en train d'essayer de détecter les collisions .
j'ai deja reussi à gerer tout sa en 2d , cad negliger z. Mais j'aimerais pouvoir gérer les collisions avec le sol et le plafond. je pourrais ainsi faire plusieurs étages ds mon monde.
il faudrait donc que j'arrive a détecter les collisions entre la camera ( que je considere comme un point ) et les murs que je considere comme des plans.
j'ai stocker ds une liste 3 points appartenant a chaque mur.
Mais je n'arrive pas trouver l'équation du plan qui passe par ces 3 points.

p1(x1,y1,z1)
p2(x2,y2,z2)
p3(x3,y3,z3)

je sais que :
x1*a+y1*b+z1*c+d = 0
x2*a+y2*b+z2*c+d = 0
x3*a+y3*b+z3*c+d = 0

mais comment je peux resoudre cela ?

si qq1 a une autre solution plus simple je suis preneur

merci d'avance
@+

2 réponses

Messages postés
14
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
18 mars 2005

il faut ke tu regarde pas rapport seulement au plan ou tu te trouve par
exemple , ben sur le plan X-Y , tu di ke le point d origine est z = 3 ,
et ben si ta camera arrive a n'importe kel point mé donc z = 3 , ben y
a collision

ensuite tu fait sur le plan X-Z et Y-Z et tu peu faire un cube
Messages postés
17
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
26 février 2005

plan défini par 3 point p1,p2,p3

tu cherches la distance de point à ce plan



normale_au_plan = produit_vectoriel(p2-p1,p3-p1);

normalise(normale_au_plan);

v = point - p1; // ou p2 ou p3

distance = produit_scalaire(normale_au_plan,v);