algorithm
Algoritmo de linea
Buscar..
Introducción
El dibujo lineal se realiza calculando posiciones intermedias a lo largo de la trayectoria de línea entre dos posiciones de punto final especificadas. Luego se dirige un dispositivo de salida para completar estas posiciones entre los puntos finales.
Algoritmo de dibujo lineal de Bresenham
Antecedentes de la teoría: el algoritmo de dibujo de líneas de Bresenham es un algoritmo de generación de líneas de trama eficiente y preciso desarrollado por Bresenham. Implica solo el cálculo de enteros para que sea preciso y rápido. También se puede ampliar para mostrar círculos de otras curvas.
En el algoritmo de dibujo de líneas de Bresenham:
Para Pendiente | m | <1:
Cualquiera de los valores de x aumenta
O tanto x como y se incrementan usando el parámetro de decisión.
Para Pendiente | m |> 1:
Cualquiera de los valores de y se incrementa
O tanto x como y se incrementan usando el parámetro de decisión.
Algoritmo para pendiente | m | <1:
Introduzca dos puntos finales (x1, y1) y (x2, y2) de la línea.
Grafica el primer punto (x1, y1).
Calcular
Delx = | x2 - x1 |
Dely = | y2 - y1 |Obtener el parámetro de decisión inicial como
P = 2 * dely - delxPara I = 0 para delx en el paso de 1
Si p <0 entonces
X1 = x1 + 1
Olla (x1, y1)
P = p + 2 dely
Más
X1 = x1 + 1
Y1 = y1 + 1
Parcela (x1, y1)
P = p + 2 dely - 2 * delx
Terminara si
Fin deFIN
Código fuente:
/* 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;
}
Algoritmo para pendiente | m |> 1:
- Introduzca dos puntos finales (x1, y1) y (x2, y2) de la línea.
- Grafica el primer punto (x1, y1).
- Calcular
Delx = | x2 - x1 |
Dely = | y2 - y1 | - Obtener el parámetro de decisión inicial como
P = 2 * delx - dely - Para I = 0 para dely en el paso de 1
Si p <0 entonces
y1 = y1 + 1
Olla (x1, y1)
P = p + 2 delx
Más
X1 = x1 + 1
Y1 = y1 + 1
Parcela (x1, y1)
P = p + 2 delx - 2 * dely
Terminara si
Fin de - FIN
Código fuente:
/* 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;
}