0% found this document useful (0 votes)
12 views34 pages

Study of Basic Graphics Functions Defined In

The document contains a series of C programs that demonstrate basic graphics functions using the 'graphics.h' library. Programs include drawing shapes like lines, circles, and rectangles, creating animations such as a moving car, and implementing functionalities like a digital clock and line clipping. Each program is structured with initialization, drawing functions, and cleanup, showcasing various graphics algorithms and techniques.

Uploaded by

raw32847
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views34 pages

Study of Basic Graphics Functions Defined In

The document contains a series of C programs that demonstrate basic graphics functions using the 'graphics.h' library. Programs include drawing shapes like lines, circles, and rectangles, creating animations such as a moving car, and implementing functionalities like a digital clock and line clipping. Each program is structured with initialization, drawing functions, and cleanup, showcasing various graphics algorithms and techniques.

Uploaded by

raw32847
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 34

1. Study of basic graphics functions defined in “graphics.h “.

Ans: #include <graphics.h>


#include <conio.h>

int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

line(100, 100, 300, 100);


rectangle(100, 150, 300, 250);
circle(400, 200, 50);
ellipse(550, 200, 0, 360, 100, 50);
arc(200, 400, 0, 180, 50);

outtextxy(100, 300, "Basic Graphics Functions Demo");

delay(5000); // Delay for 5 seconds


closegraph();
return 0;
}
2. Write a program to draw a Hut or other geometrical figures.
Ans: #include <graphics.h>

#include <conio.h>

int main() {

int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

// Drawing the base of the hut

rectangle(100, 200, 300, 400);

rectangle(160, 300, 240, 400);

// Drawing the roof of the hut

line(100, 200, 200, 100);

line(200, 100, 300, 200);

getch();

closegraph();

return 0;

}
3. Write a Program to draw basic graphics construction like line, circle, arc, ellipse and
rectangle
Ans: #include <graphics.h>

#include <conio.h>

int main() {

int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

line(100, 100, 200, 100);

circle(300, 100, 50);

arc(400, 100, 0, 180, 50);

ellipse(500, 100, 0, 360, 50, 25);

rectangle(600, 50, 700, 150);

getch();

closegraph();

return 0;

}
4. Write a Program to make a moving car.
Ans: #include <graphics.h>

#include <conio.h>

#include <dos.h>

void drawCar(int x, int y) {

rectangle(x, y, x + 100, y + 50);

circle(x + 20, y + 60, 10);

circle(x + 80, y + 60, 10);

int main() {

int gd = DETECT, gm, x = 50, y = 200;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

while (!kbhit()) {

cleardevice();

drawCar(x, y);

delay(100);

x += 10;

if (x > getmaxx()) x = 0;

getch();

closegraph();

return 0;

}
5. Write a Program to make a kite.
Ans: #include <graphics.h>
#include <conio.h>

int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

line(200, 100, 300, 200);


line(300, 200, 200, 300);
line(200, 300, 100, 200);
line(100, 200, 200, 100);
line(200, 100, 200, 300);
line(100, 200, 300, 200);

getch();
closegraph();
return 0;
}

6. Write a Program to implement Digital Clock


Ans: #include <graphics.h>
#include <conio.h>
#include <time.h>
#include <dos.h>

void drawClock(int h, int m, int s) {


char timeStr[9];
sprintf(timeStr, "%02d:%02d:%02d", h, m, s);
settextstyle(SANS_SERIF_FONT, HORIZ_DIR, 4);
outtextxy(200, 200, timeStr);
}

int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

while (!kbhit()) {
time_t now = time(NULL);
struct tm *t = localtime(&now);
cleardevice();
drawClock(t->tm_hour, t->tm_min, t->tm_sec);
delay(1000);
}

getch();
closegraph();
return 0;
}
7. Write a Program to draw the fish.
Ans: #include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int gd,gm;
detectgraph(&gd,&gm);

initgraph(&gd,&gm,"C:\\TurboC3\\BGI");
ellipse(200,200,0,360,130,50);
setfillstyle(LINE_FILL,CYAN);
floodfill(201,201,15);

line(325,185,390,155);
line(390,155,360,200);
line(360,235,325,215);
line(395,235,325,215);
setfillstyle(LINE_FILL,LIGHTRED);
floodfill(330,190,15);

ellipse(100,200,315,45,50,60);
circle(120,180,3);
setfillstyle(SOLID_FILL,YELLOW):
floodfill(120,180,3);

line(170,150,260,90);
line(260,90,220,150);
setfillstyle(LINE_FILL,LIGHTRED);
floodfill(200,140,15);

line(170,250,260,290);
line(260,290,230,250);
setfillstyle(LINE_FILL,LIGHTRED);
floodfill(200,255,15);

arc(220,185,270,90,6);

arc(200,185,270,90,6);
arc(180,185,270,90,6);
arc(200,215,270,90,6);
arc(220,215,270,90,6);
arc(180,215,270,90,6);
arc(240,200,270,90,6);

getch();
closegraph();
}

8. Write a program to draw a line using DDA Algo.


Ans: #include <graphics.h>
#include <conio.h>
#include <math.h>
void drawLineDDA(int x1, int y1, int x2, int y2) {
int dx = x2 - x1;
int dy = y2 - y1;
int steps = abs(dx) > abs(dy) ? abs(dx) : abs(dy);
float Xinc = dx / (float) steps;
float Yinc = dy / (float) steps;
float x = x1;
float y = y1;

for (int i = 0; i <= steps; i++) {


putpixel(x, y, WHITE);
x += Xinc;
y += Yinc;
delay(10);
}
}
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

drawLineDDA(100, 100, 200, 200);

getch();
closegraph();
return 0;
}
9. Write a program to draw a line using Bresenhem’s Algo.
Ans: #include <graphics.h>
#include <conio.h>
void drawLineBresenham(int x1, int y1, int x2, int y2) {
int dx = abs(x2 - x1);
int dy = abs(y2 - y1);
int p = 2 * dy - dx;
int twoDy = 2 * dy;
int 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);
delay(10);
}
}

int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

drawLineBresenham(100, 100, 200, 200);


getch();
closegraph();
return 0;
}

10. Write a program to draw a circle using mid-point algorithm.

Ans: #include <graphics.h>


#include <conio.h>

void drawCircleMidPoint(int xc, int yc, int r) {


int x = 0;
int y = r;
int p = 1 - r;
while (x <= y) {
putpixel(xc + x, yc + y, WHITE);
putpixel(xc - x, yc + y, WHITE);
putpixel(xc + x, yc - y, WHITE);
putpixel(xc - x, yc - y, WHITE);
putpixel(xc + y, yc + x, WHITE);
putpixel(xc - y, yc + x, WHITE);
putpixel(xc + y, yc - x, WHITE);
putpixel(xc - y, yc - x, WHITE);

if (p < 0) {
p += 2 * x + 1;
} else {
p += 2 * (x - y) + 1;
y--;
}
x++;
delay(10);
}
}
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

drawCircleMidPoint(200, 200, 100);

getch();
closegraph();
return 0;
}

11. Write a Program to implement Digital Clock.

Ans: #include <graphics.h>


#include <ctime>
#include <cstdio>

void displayTime() {
// Get current time
time_t rawtime;
struct tm *timeinfo;
char buffer[80];
time(&rawtime);
timeinfo = localtime(&rawtime);

strftime(buffer, sizeof(buffer), "%I:%M:%S %p", timeinfo);

// Clear previous display


setcolor(BLACK);
outtextxy(100, 100, buffer);

// Display current time


setcolor(WHITE);
outtextxy(100, 100, buffer);
}

int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

while (1) {
displayTime();
delay(1000); // Delay for 1 second (1000 milliseconds)
}

getch();
closegraph();
return 0;
}
12. Write a program to perform line clipping.
Ans: #include <graphics.h>
#include <conio.h>

void lineClipping(int x1, int y1, int x2, int y2, int xmin, int ymin, int xmax,
int ymax) {
// Cohen-Sutherland algorithm for line clipping
int code1, code2, codeOut;
bool accept = false;
bool done = false;

auto computeCode = [&](int x, int y) {


int code = 0;
if (x < xmin) code |= 1;
else if (x > xmax) code |= 2;
if (y < ymin) code |= 4;
else if (y > ymax) code |= 8;
return code;
};

code1 = computeCode(x1, y1);


code2 = computeCode(x2, y2);

do {
if (!(code1 | code2)) {
accept = true;
done = true;
} else if (code1 & code2) {
done = true;
} else {
int x, y;
codeOut = code1 ? code1 : code2;

if (codeOut & 8) {
x = x1 + (x2 - x1) * (ymax - y1) / (y2 - y1);
y = ymax;
} else if (codeOut & 4) {
x = x1 + (x2 - x1) * (ymin - y1) / (y2 - y1);
y = ymin;
} else if (codeOut & 2) {
y = y1 + (y2 - y1) * (xmax - x1) / (x2 - x1);
x = xmax;
} else {
y = y1 + (y2 - y1) * (xmin - x1) / (x2 - x1);
x = xmin;
}

if (codeOut == code1) {
x1 = x;
y1 = y;
code1 = computeCode(x1, y1);
} else {
x2 = x;
y2 = y;
code2 = computeCode(x2, y2);
}
}
} while (!done);

if (accept) {
setcolor(WHITE);
rectangle(xmin, ymin, xmax, ymax);
setcolor(GREEN);
line(x1, y1, x2, y2);
}
}

int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

lineClipping(50, 50, 400, 400, 100, 100, 300, 300);


getch();
closegraph();
return 0;
}

13. .
Ans: #include <graphics.h>

#include <conio.h>

#include <math.h>

void rotatePoint(int x, int y, int xc, int yc, float angle, int &xr, int &yr) {

float radian = angle * M_PI / 180;

xr = xc + (x - xc) * cos(radian) - (y - yc) * sin(radian);

yr = yc + (x - xc) * sin(radian) + (y - yc) * cos(radian);

int main() {

int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");


int x1 = 100, y1 = 100, x2 = 200, y2 = 100;

int xc = 150, yc = 150;

float angle = 45;

int xr1, yr1, xr2, yr2;

rotatePoint(x1, y1, xc, yc, angle, xr1, yr1);

rotatePoint(x2, y2, xc, yc, angle, xr2, yr2);

line(x1, y1, x2, y2);

setcolor(RED);

line(xr1, yr1, xr2, yr2);

getch();

closegraph();

return 0;

Before Rotation

After Rotation
14. Write a program to perform Translation.

Ans: #include <graphics.h>

#include <conio.h>

void translate(int &x, int &y, int tx, int ty) {

x += tx;

y += ty;

int main() {

int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

int x1 = 100, y1 = 100, x2 = 200, y2 = 100;


int tx = 50, ty = 50;

line(x1, y1, x2, y2);

translate(x1, y1, tx, ty);

translate(x2, y2, tx, ty);

setcolor(RED);

line(x1, y1, x2, y2);

getch();

closegraph();

return 0;

}
15. Write a program to perform Scaling.
Ans: #include <graphics.h>

#include <conio.h>

void scale(int &x, int &y, int sx, int sy) {

x *= sx;

y *= sy;

int main() {

int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

int x1 = 100, y1 = 100, x2 = 200, y2 = 100;

int sx = 2, sy = 2;

line(x1, y1, x2, y2);

scale(x1, y1, sx, sy);

scale(x2, y2, sx, sy);


setcolor(RED);

line(x1, y1, x2, y2);

getch();

closegraph();

return 0;

}
16. Write a program to implement polygon filling using
boundary fill algorithm.
Ans: #include <graphics.h>

#include <conio.h>

void boundaryFill(int x, int y, int fill_color, int boundary_color) {

if (getpixel(x, y) != boundary_color && getpixel(x, y) != fill_color) {

putpixel(x, y, fill_color);

boundaryFill(x + 1, y, fill_color, boundary_color);

boundaryFill(x - 1, y, fill_color, boundary_color);

boundaryFill(x, y + 1, fill_color, boundary_color);

boundaryFill(x, y - 1, fill_color, boundary_color);

int main() {

int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

int poly[] = {150, 150, 200, 100, 250, 150, 200, 200, 150, 150};

drawpoly(5, poly);
boundaryFill(200, 150, RED, WHITE);

getch();

closegraph();

return 0;

17. Write a program to implement polygon filling using flood fill


algorithm.
Ans: #include <graphics.h>

#include <conio.h>

void floodFill(int x, int y, int fill_color, int old_color) {

if (getpixel(x, y) == old_color) {

putpixel(x, y, fill_color);

floodFill(x + 1, y, fill_color, old_color);

floodFill(x - 1, y, fill_color, old_color);

floodFill(x, y + 1, fill_color, old_color);

floodFill(x, y - 1, fill_color, old_color);

int main() {

int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

int poly[] = {150, 150, 200, 100, 250, 150, 200, 200, 150, 150};

drawpoly(5, poly);

floodFill(200, 150, RED, BLACK);

getch();

closegraph();
return 0;

18. Write a program to implement reflection of a point, line.


Ans: #include <graphics.h>

#include <conio.h>

void reflectPoint(int &x, int &y, int axis) {

if (axis == 'x') y = -y;

else x = -x;

void reflectLine(int &x1, int &y1, int &x2, int &y2, int axis) {

reflectPoint(x1, y1, axis);

reflectPoint(x2, y2, axis);

int main() {

int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

int x1 = 100, y1 = 100, x2 = 200, y2 = 200;

char axis = 'x';

line(x1, y1, x2, y2);

reflectLine(x1, y1, x2, y2, axis);

setcolor(RED);

line(x1, y1, x2, y2);


getch();

closegraph();

return 0;

19. Write a program to perform shearing on a line.


Ans: #include <graphics.h>

#include <conio.h>

void shearLine(int &x1, int &y1, int &x2, int &y2, int shx, int shy) {

x1 = x1 + shx * y1;

x2 = x2 + shx * y2;

y1 = y1 + shy * x1;

y2 = y2 + shy * x2;

int main() {

int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

int x1 = 100, y1 = 100, x2 = 200, y2 = 100;

int shx = 1, shy = 0;


line(x1, y1, x2, y2);

shearLine(x1, y1, x2, y2, shx, shy);

setcolor(RED);

line(x1, y1, x2, y2);

getch();

closegraph();

return 0;

}
20. Write a program to implement transformations.
Ans: #include <graphics.h>

#include <conio.h>

void translate(int &x, int &y, int tx, int ty) {

x += tx;

y += ty;

void rotatePoint(int x, int y, int xc, int yc, float angle, int &xr, int &yr) {

float radian = angle * M_PI / 180;

xr = xc + (x - xc) * cos(radian) - (y - yc) * sin(radian);

yr = yc + (x - xc) * sin(radian) + (y - yc) * cos(radian);

void scale(int &x, int &y, int sx, int sy) {

x *= sx;

y *= sy;

int main() {
int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\Turboc3\\BGI");

int x1 = 100, y1 = 100, x2 = 200, y2 = 100;

int tx = 50, ty = 50;

float angle = 45;

int sx = 2, sy = 2;

int xr1, yr1, xr2, yr2;

// Original line

line(x1, y1, x2, y2);

// Translation

translate(x1, y1, tx, ty);

translate(x2, y2, tx, ty);

setcolor(RED);

line(x1, y1, x2, y2);

// Rotation

rotatePoint(x1, y1, tx, ty, angle, xr1, yr1);

rotatePoint(x2, y2, tx, ty, angle, xr2, yr2);

setcolor(GREEN);

line(xr1, yr1, xr2, yr2);

// Scaling

scale(x1, y1, sx, sy);

scale(x2, y2, sx, sy);

setcolor(BLUE);
line(x1, y1, x2, y2);

getch();

closegraph();

return 0;

You might also like