Mini Raytracing [Algo][C++] - Algo - Programmation
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
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).
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 |
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 ?
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!)