[Algo][C++] Mini Raytracing

Mini Raytracing [Algo][C++] - Algo - Programmation

Marsh Posté le 20-09-2005 à 08:51:51    

Pour la programmation d'un jeu, j'ai besoin d'un algo de raytracing ultra simplifié (c'est pour ajouter un effet de brouillard de guerre un peu sioux).
 
Voila mon probleme (je travaille dans un plan 2D):
 
Soit un point A la source, un point B la destination, un point C un éventuel obstacle. Comment calculer la distance entre le point C et la droite AB connaissant toutes les coordonnées des points ?
 
Cordialement,
Xterm-in'Hate.
 
(PS.: pour l'anecdote, j'ai obtenu un diplome BAC+6 en sciences appliquées il n'y a pas si longtemps....vous pouvez rigoler, c'est pathétique comme situation!)

Reply

Marsh Posté le 20-09-2005 à 08:51:51   

Reply

Marsh Posté le 20-09-2005 à 09:33:54    

En supposant que tu aies l'équation de droite  
a * x + b * y + c = 0 (je suppose que tu sais l'obtenir sinon on y reviendra)
le vecteur de coordonnées (a,b)  
détermine un vecteur normal à ta droite.
Tu determines sa norme n = sqrt(a *a + b * b)
 
en fait la distance du point C à la droite c'est simplement :
d(C, AB) = a / n * xC + b / n * xC + c / n

Reply

Marsh Posté le 20-09-2005 à 09:38:14    

Je ne dispose que de A(ax,ay), B(bx,by) et biensur C(cx,cy).

Reply

Marsh Posté le 20-09-2005 à 09:41:43    

En utilisant le produit vectoriel, je sors de mon chapeau, ceci :
 
d(C,AB) = | vecteurAC ^ vecteurAB | / | vecteurAB |


Message édité par xterminhate le 20-09-2005 à 09:42:00
Reply

Marsh Posté le 20-09-2005 à 09:46:32    

En développant, j'obtiens ca :
 
d(C,AB) = | (cx-ax)(by-ay)-(cy-ay)(bx-ax) | / racine[ (bx-ax)² + (by-ay)² ]
 
Ca parait correct ?

Reply

Sujets relatifs:

Leave a Replay

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