Skip to main content

Posts

Showing posts with the label Computer Graphics

Cohen Sutherland Line Clipping Algorithm in C Programming

#include #include #include #define MAX 20 enum { TOP = 0x1, BOTTOM = 0x2, RIGHT = 0x4, LEFT = 0x8 }; enum { FALSE, TRUE }; typedef unsigned int outcode; outcode compute_outcode(int x, int y,int xmin, int ymin, int xmax, int ymax) { outcode oc = 0; if (y > ymax) oc |= TOP; else if (y xmax) oc |= RIGHT; else if (x OUTPUT

Flood-Fill Algorithm to fill different types of geometric shapes In C Programming

#include #include #include void floodFill4(int,int,int,int); void floodFill8(int,int,int,int); void main() { int gd=DETECT,gm; int b=0; initgraph(&gd,&gm,""); setbkcolor(b); setcolor(BLUE); outtextxy(5,5,"Flood Filling algorithm using 4-connected and 8-connected"); line(100,100,50,100); setcolor(RED); line(100,100,100,150); setcolor(BLUE); line(100,150,50,150); setcolor(GREEN); line(50,100,50,150); floodFill8(53,102,14,b); setcolor(GREEN); circle(200,200,30); setcolor(RED); circle(200,200,50); floodFill4(200,240,5,b); getch(); } void floodFill4(int x,int y,int fill,int old) { int current; current=getpixel(x,y); //delay(100); if(current==old) { putpixel(x,y,fill); floodFill4(x+1,y,fill,old); floodFill4(x-1,y,fill,old); floodFill4(x,y-1,fill,old); floodFill4(x,y+1,fill,old); } } void floodFill8(int x,int y,int fill,int old) { int current; current=getpixel(x,y); if(current==old) { putpixel(x,y,fill); floodF...

Boundary-Fill Algorithm to fill different types of geometric shapes in C Programming

#include #include #include void BoundaryFill4(int,int,int,int); void BoundaryFill8(int,int,int,int); void main() { int gd=DETECT,gm; initgraph(&gd,&gm,""); setbkcolor(15); setcolor(BLUE); outtextxy(0,0,"Boundary Filling algorithm using 4-connected and 8-connected"); rectangle(50,50,100,100); circle(50,50,30); BoundaryFill8(56,56,5,BLUE); BoundaryFill4(40,40,14,BLUE); getch(); } void BoundaryFill4(int x,int y,int fill,int boundary) { int current; current=getpixel(x,y); if((current!=boundary) && (current!=fill)) { putpixel(x,y,fill); BoundaryFill4(x+1,y,fill,boundary); BoundaryFill4(x-1,y,fill,boundary); BoundaryFill4(x,y-1,fill,boundary); BoundaryFill4(x,y+1,fill,boundary); } } void BoundaryFill8(int x,int y,int fill,int boundary) { int current; current=getpixel(x,y); if((current!=boundary) && (current!=fill)) { putpixel(x,y,fill); BoundaryFill8(x+1,y,fill,boundary); BoundaryFill8(x-1,y,fill,boundary);...

2D Basic Transformations such as Translation, Rotation and Scaling in C Programming

#include #include #include #include void translate(int,int); void scale(int,int); void rotate(float); void main() { int ch; int gd=DETECT,gm; int tx,ty,sx,sy; float theta; initgraph(&gd,&gm,"c:\\tc\\bgi"); setbkcolor(WHITE); setcolor(6); outtextxy (100,88,"Object."); rectangle(100,250,150,200); printf("---MENU---"); printf("\n 1)Translate\n 2)Scale\n 3)Rotate"); printf("\nEnter your choice: "); scanf("%d",&ch); cleardevice(); switch(ch) { case 1: outtextxy(10,45,"Enter value of tx and ty:"); scanf("%d %d",&tx,&ty); translate(tx,ty); break; case 2: outtextxy(10,45,"Enter the value of sx and sy:"); scanf("%d%d",&sx,&sy); scale(sx,sy); break; case 3: outtextxy(10,50,"Enter the angle for rotation: "); scanf("%f",&theta); rotate(theta); break; default: printf(...

MidPoint Ellipse Drawing Algorithm in C Programming

#include #include #include #define ROUND(a) ((int)(a+0.5)) void ellipseMidPoint(int xCen,int yCen,int Rx,int Ry); void ellipsePlot(int,int,int,int); void main() { int x,y,rx,ry,gdriver=DETECT,gmode; clrscr(); initgraph(&gdriver,&gmode,""); setbkcolor(YELLOW); printf("\nEnter point(x,y):"); scanf("%d %d",&x,&y); printf("\nEnter radius(rx,ry):"); scanf("%d %d",&rx,&ry); ellipseMidPoint(x,y,rx,ry); getch(); } void ellipseMidPoint(int xCen,int yCen,int Rx,int Ry) { int Rx2=Rx*Rx; int Ry2=Ry*Ry; int twoRx2=2*Rx2; int twoRy2=2*Ry2; int x=0; int y=Ry; int px=0; int py=twoRx2*y; float p; ellipsePlot(xCen,yCen,x,y); p=Ry2-(Rx2*Ry)+ROUND(0.25*Rx2); while(px 0) { y--; py-=twoRx2; if(p > 0) p+=Rx2-py; else { x++; px+=twoRy2; p+=Rx2-py+px; } ellipsePlot(xCen,yCen,x,y); } } void ellipsePlot(int xCen,int yCen,int x,int y) { putpixel(xCen+x,yCen+y,BLUE); putpix...

Bresenham's Circle Drawing Algorithm in C Programming

#include #include #include void BRESENHAM_CIRCLE(int x,int y,int r); void circlePlot(int,int,int,int); void main() { int x,y,r,gdriver=DETECT,gmode; clrscr(); initgraph(&gdriver,&gmode,""); printf("\nEnter point(x,y):"); scanf("%d %d",&x,&y); printf("\nEnter radius:"); scanf("%d",&r); BRESENHAM_CIRCLE(x,y,r); getch(); } void BRESENHAM_CIRCLE(int xCen,int yCen,int r) { int x=0; int y=r; int s=3-2*r; circlePlot(xCen,yCen,x,y); while(x OUTPUT

MidPoint Circle Drawing Algorithm in C Programming

#include #include #include void MID_POINT_CIRCLE(int x,int y,int r); void circlePlot(int,int,int,int); void main() { int x,y,r,gdriver=DETECT,gmode; clrscr(); initgraph(&gdriver,&gmode,""); printf("\nEnter point(x,y):"); scanf("%d %d",&x,&y); printf("\nEnter radius:"); scanf("%d",&r); MID_POINT_CIRCLE(x,y,r); getch(); } void MID_POINT_CIRCLE(int xCen,int yCen,int r) { int x=0; int y=r; int p=1-r; circlePlot(xCen,yCen,x,y); while(x OUTPUT

Bresenham Line Drawing Algorithm in C Programming

#include< stdio.h> #include< graphics.h> #include< conio.h> void BRESENHAM_LINE(int x1,int y1,int x2,int y2); void main() { int x1,y1,x2,y2,gdriver=DETECT,gmode; clrscr(); initgraph(&gdriver,&gmode,""); printf("\nEnter point1(x1,y1):"); scanf("%d %d",&x1,&y1); printf("\nEnter point2(x2,y2):"); scanf("%d %d",&x2,&y2); BRESENHAM_LINE(x1,y1,x2,y2); getch(); } void BRESENHAM_LINE(int x1,int y1,int x2,int y2) { int dx=abs(x1-x2),dy=abs(y1-y2); int p=2*dy-dx; int twoDy=2*dy,twoDyDx=2*(dy-dx); int x,y,xEnd; if(x1>x2) { x=x2; y=y2; xEnd=x1; } else { x=x1; y=y1; xEnd=x2; } putpixel(x,y,WHITE); while(x < xEnd) { x++; if(p < 0) p+=twoDy; else { y++; p+=twoDyDx; } putpixel(x,y,WHITE); } } OUTPUT

Digital Differential Analyzer (DDA) Line Drawing Algorithm using C programming

#include< stdio.h> #include< graphics.h> #include< conio.h> #define ROUND(a) ((int)(a+0.5)) void DDA_LINE(int x1,int y1,int x2,int y2); void main() { int x1,y1,x2,y2,gdriver=DETECT,gmode; clrscr(); initgraph(&gdriver,&gmode,""); printf("\nEnter point1(x1,y1):"); scanf("%d %d",&x1,&y1); printf("\nEnter point2(x2,y2):"); scanf("%d %d",&x2,&y2); DDA_LINE(x1,y1,x2,y2); getch(); } void DDA_LINE(int x1,int y1,int x2,int y2) { int dx=x2-x1,dy=y2-y1,steps,i; float xInc,yInc,x=x1,y=y1; if(abs(dx)>abs(dy)) steps=abs(dx); else steps=abs(dy); xInc=dx/(float)steps; yInc=dy/(float)steps; putpixel(ROUND(x),ROUND(y),BLACK); for(i=0;i< steps;i++) { x+=xInc; y+=yInc; putpixel(ROUND(x),ROUND(y),BLACK); } } Output of Program