algorithm
Lijn algoritme
Zoeken…
Invoering
Lijntekening wordt bereikt door het berekenen van tussenliggende posities langs het lijnpad tussen twee gespecificeerde eindpuntposities. Een uitvoerapparaat wordt vervolgens gestuurd om deze posities tussen de eindpunten in te vullen.
Bresenham Algoritme voor lijntekening
Achtergrondtheorie: Bresenham's Line Drawing Algorithm is een efficiënt en nauwkeurig rasterlijn genererend algoritme ontwikkeld door Bresenham. Het gaat alleen om gehele getallen, dus het is nauwkeurig en snel. Het kan ook worden uitgebreid om cirkels nog andere curven weer te geven.
In Bresenham lijntekening algoritme:
Voor helling | m | <1:
De waarde van x is verhoogd
OF zowel x als y worden verhoogd met de beslissingsparameter.
Voor helling | m |> 1:
De waarde van y is verhoogd
OF zowel x als y worden verhoogd met de beslissingsparameter.
Algoritme voor helling | m | <1:
Voer twee eindpunten (x1, y1) en (x2, y2) van de lijn in.
Plot het eerste punt (x1, y1).
Berekenen
Delx = | x2 - x1 |
Dely = | y2 - y1 |Verkrijg de initiële beslissingsparameter als
P = 2 * dely - delxVoor I = 0 tot delx in stap van 1
Als p <0 dan
X1 = x1 + 1
Pot (x1, y1)
P = p + 2 dely
Anders
X1 = x1 + 1
Y1 = y1 + 1
Plot (x1, y1)
P = p + 2 dely - 2 * delx
Stop als
Einde voorEINDE
Broncode:
/* 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;
}
Algoritme voor helling | m |> 1:
- Voer twee eindpunten (x1, y1) en (x2, y2) van de lijn in.
- Plot het eerste punt (x1, y1).
- Berekenen
Delx = | x2 - x1 |
Dely = | y2 - y1 | - Verkrijg de initiële beslissingsparameter als
P = 2 * delx - dely - Voor I = 0 tot stap 1
Als p <0 dan
y1 = y1 + 1
Pot (x1, y1)
P = p + 2 delx
Anders
X1 = x1 + 1
Y1 = y1 + 1
Plot (x1, y1)
P = p + 2 delx - 2 * dely
Stop als
Einde voor - EINDE
Broncode:
/* 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;
}