onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Dessiner une ligne en utilisant juste draw_point Jeu 1 Oct 2009 - 18:03 | |
| Voici deux algorithmes de tracés de ligne pour ceux qui voudraient faire évoluer leur compétences mathématiques. Ces algo n'utilisent qu'une fonction pour afficher un point et des maths. Le premier utilise la trigo. Le deuxième un peut plus compliqué est plus précise. Trigo : - Code:
-
//void s_draw_line(x1,y1,x2,y2); x1 = argument0 y1 = argument1 x2 = argument2 y2 = argument3 l = point_distance(x1,y1,x2,y2) d = point_direction(x1,y1,x2,y2)
draw_point(x1,y1) ; draw_point(x2,y2) ;
for(i=0 ; i<=l ; i+=1) { draw_point(x1 + cos(d*pi/180)*i ,y1 - sin(d*pi/180)*i) }
Le deuxieme - Code:
-
//trace une ligne selon l'algorithme de Lucas //void s_draw_line(x1,y1,x2,y2);
x1 = argument0 y1 = argument1 x2 = argument2 y2 = argument3
Dx = abs(x2-x1); Dy = abs(y2-y1);
if(x1<x2) xincr = 1; else xincr = -1;
if(y1<y2) yincr = 1; else yincr = -1;
x = x1; y = y1;
if(Dx>Dy) { erreur = Dx/2; for(i=0;i<Dx;i+=1) { x += xincr; erreur += Dy; if(erreur>Dx) { erreur -= Dx; y += yincr; } draw_point(x,y); }
} else { erreur = Dy/2; for(i=0;i<Dy;i+=1) { y += yincr; erreur += Dx; if(erreur>Dy) { erreur -= Dy; x += xincr; } draw_point(x,y); } }
Tout ceci peut etre utile si un jour vous venez a utiliser le language C ou C++
Dernière édition par onilink_ le Mer 18 Aoû 2010 - 14:58, édité 1 fois |
|
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: Dessiner une ligne en utilisant juste draw_point Ven 2 Oct 2009 - 2:14 | |
| C'est très intéressant, mais inutile sous GM.
Néanmoins, pour le C par exemple, c'est une très bonne chose. L'algo de Lucas par exemple est très sympa. |
|