onilink_ Utilisateur moyen

Nombre de messages: 63 Localisation: Le vigan (Pres de Ganges) Projet Actuel: Convertisseur : Projet .gm6 >> Projet C++ SDL + FMOD Avancement:
 | Sujet: Dessiner une ligne en utilisant juste draw_point Jeu 1 Oct - 17:03 | |
| Voici deux algorithmes de tracés de ligne pour ceux qui voudraient faire evoluer leur competences mathematiques. Ces algo n'utilisent qu'une fonction pour afficher un point et des maths. Le premier utilise la trigo. Le deuxieme un peut plus compliqué est plus precis. 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++ |
|
[TheDarkTiger] Modérateur 'Programmation'

Nombre de messages: 6165 Localisation: Essonne Avancement:
 | Sujet: Re: Dessiner une ligne en utilisant juste draw_point Ven 2 Oct - 1: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. _________________ Bonne chance pour vos projets actuels! Prêt à aider ceux qui en ont besoin ^^   actuellement à Liverpool http://leaveherpool.canalblog.com/Bienvenue au 1388eme utilisateur : lionelvader ! |
|