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:

  1. Entrez deux points de fin (x1, y1) et (x2, y2) de la ligne.

  2. Tracez le premier point (x1, y1).

  3. Calculer
    Delx = | x2 - x1 |
    Dely = | y2 - y1 |

  4. Obtenir le paramètre de décision initial comme
    P = 2 * dely - delx

  5. Pour 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 pour

  6. 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*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:

  1. Entrez deux points de fin (x1, y1) et (x2, y2) de la ligne.
  2. Tracez le premier point (x1, y1).
  3. Calculer
    Delx = | x2 - x1 |
    Dely = | y2 - y1 |
  4. Obtenir le paramètre de décision initial comme
    P = 2 * delx - dely
  5. 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

  6. 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;
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow