algorithm
Algorithme de ligne
Recherche…
Introduction
Le dessin au trait est effectué en calculant des positions intermédiaires le long du tracé de ligne entre deux positions de point final spécifiées. Un périphérique de sortie est ensuite dirigé pour remplir ces positions entre les points d'extrémité.
Algorithme de dessin au trait de Bresenham
Théorie de base: L'algorithme de dessin au trait de Bresenham est un algorithme efficace et précis de génération de lignes de trame développé par Bresenham. Il ne s'agit que d'un calcul sur nombres entiers, donc précis et rapide. Il peut également être étendu pour afficher des cercles supplémentaires.
Dans l'algorithme de dessin au trait de Bresenham:
Pour pente | m | <1:
La valeur de x est augmentée
OU à la fois x et y est augmenté en utilisant le paramètre de décision.
Pour la pente | m |> 1:
La valeur de y est augmentée
OU à la fois x et y est augmenté en utilisant le paramètre de décision.
Algorithme pour la pente | m | <1:
Entrez deux points de fin (x1, y1) et (x2, y2) de la ligne.
Tracez le premier point (x1, y1).
Calculer
Delx = | x2 - x1 |
Dely = | y2 - y1 |Obtenir le paramètre de décision initial comme
P = 2 * dely - delxPour I = 0 à delx dans l'étape de 1
Si p <0 alors
X1 = x1 + 1
Pot (x1, y1)
P = p + 2 dely
Autre
X1 = x1 + 1
Y1 = y1 + 1
Tracé (x1, y1)
P = p + 2 dely - 2 * delx
Fin si
Fin pourFIN
Code source:
/* A C program to implement Bresenham line drawing algorithm for |m|<1 */
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
int main()
{
int gdriver=DETECT,gmode;
int x1,y1,x2,y2,delx,dely,p,i;
initgraph(&gdriver,&gmode,"c:\\TC\\BGI");
printf("Enter the intial points: ");
scanf("%d",&x1);
scanf("%d",&y1);
printf("Enter the end points: ");
scanf("%d",&x2);
scanf("%d",&y2);
putpixel(x1,y1,RED);
delx=fabs(x2-x1);
dely=fabs(y2-y1);
p=(2*dely)-delx;
for(i=0;i<delx;i++){
if(p<0)
{
x1=x1+1;
putpixel(x1,y1,RED);
p=p+(2*dely);
}
else
{
x1=x1+1;
y1=y1+1;
putpixel(x1,y1,RED);
p=p+(2*dely)-(2*delx);
}
}
getch();
closegraph();
return 0;
}
Algorithme pour la pente | m |> 1:
- Entrez deux points de fin (x1, y1) et (x2, y2) de la ligne.
- Tracez le premier point (x1, y1).
- Calculer
Delx = | x2 - x1 |
Dely = | y2 - y1 | - Obtenir le paramètre de décision initial comme
P = 2 * delx - dely - Pour I = 0 à dely à l'étape de 1
Si p <0 alors
y1 = y1 + 1
Pot (x1, y1)
P = p + 2 delx
Autre
X1 = x1 + 1
Y1 = y1 + 1
Terrain (x1, y1)
P = p + 2 delx - 2 * dely
Fin si
Fin pour - FIN
Code source:
/* A C program to implement Bresenham line drawing algorithm for |m|>1 */
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
int main()
{
int gdriver=DETECT,gmode;
int x1,y1,x2,y2,delx,dely,p,i;
initgraph(&gdriver,&gmode,"c:\\TC\\BGI");
printf("Enter the intial points: ");
scanf("%d",&x1);
scanf("%d",&y1);
printf("Enter the end points: ");
scanf("%d",&x2);
scanf("%d",&y2);
putpixel(x1,y1,RED);
delx=fabs(x2-x1);
dely=fabs(y2-y1);
p=(2*delx)-dely;
for(i=0;i<delx;i++){
if(p<0)
{
y1=y1+1;
putpixel(x1,y1,RED);
p=p+(2*delx);
}
else
{
x1=x1+1;
y1=y1+1;
putpixel(x1,y1,RED);
p=p+(2*delx)-(2*dely);
}
}
getch();
closegraph();
return 0;
}