www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 49ae3608f502111f80ff0fb090e5771b5d85aec7
parent d115d482e6b3d4e34cead8e324c8ae48d4a08dba
Author: Yoann <yoann.b87@voila.fr>
Date:   Sat, 22 Oct 2011 15:41:34 +0200

La fonction de calcul d'intersection viens de passer l'épreuve du test
basique. Prochaine étape intégration de cette fonction dans la fonction
d'ajout de segements.

Diffstat:
Mroads.c | 20+++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/roads.c b/roads.c @@ -121,7 +121,7 @@ void grid_initNodesGrid(int width, int height, int segmentSize) { Vertex* intersectionBetween(Vertex *va, Vertex *vb, Vertex *ua, Vertex *ub) { Vertex *inter = (Vertex*) malloc(sizeof(Vertex)); //int ix, iy; // Coordonnées du point d'intersection. - int m, k; // Coordonnées de l'intersection des vecteurs sur les droites. + float m, k; // Coordonnées de l'intersection des vecteurs sur les droites. int Ix, Iy, Jx, Jy; // Vecteur I et J corespondant au segment v et u; Ix = vb->x - va->x; @@ -129,9 +129,9 @@ Vertex* intersectionBetween(Vertex *va, Vertex *vb, Vertex *ua, Vertex *ub) { Jx = ub->x - ua->x; Jy = ub->y - ua->y; - m = -(-Ix*va->y+Ix*ua->y+Iy*va->x-Iy*ua->x)/(Ix*Jy-Iy*Jx); - k = -(va->x*Jy-ua->x*Jy-Jx*va->y+Jx*ua->y)/(Ix*Jy-Iy*Jx); - + m = (float)(-(-Ix*va->y+Ix*ua->y+Iy*va->x-Iy*ua->x))/(float)(Ix*Jy-Iy*Jx); + k = (float)(-(va->x*Jy-ua->x*Jy-Jx*va->y+Jx*ua->y))/(float)(Ix*Jy-Iy*Jx); + fprintf(stderr,"k , m : %f %f\n",k,m); if(m < 1 && m > 0 && k < 1 && k > 0) { inter->x = va->x + k * Ix; inter->y = va->y + k * Iy; @@ -370,7 +370,17 @@ int main() { int n = 5; svg_start(800,600); carreY(); - + Vertex a = {1,1}; + Vertex b = {4,1}; + Vertex c = {1,2}; + Vertex d = {4,0}; + + Vertex *inter = intersectionBetween(&a,&b,&c,&d); + if(inter == NULL) + fprintf(stderr,"Pas d'intersection\n"); + else + fprintf(stderr,"intersection : %d %d\n",inter->x,inter->y); + //int i; //for (i = 0; i < n; i++) { // svg_line(&(points[i]), &(points[(i+1)%n]));