Abrar CG
Abrar CG
COMPUTER GRAPHICS
(CSE-7317L)
PRACTICALS
by
ABRAR SHAH
(19048112004)
LECTURER
ER. WASEEM BAKHSHI
#include <stdio.h>
#include <math.h>
#include <dos.h>
void main() {
dx = abs(x2 - x1);
dy = abs(y2 - y1);
step = dx;
} else {
step = dy;
dx = dx / step;
dy = dy / step;
x = x1;
y = y1;
i = 1;
putpixel(x, y, 5);
x = x + dx;
y = y + dy;
i = i + 1;
delay(100);
getch();
closegraph();
#include<graphics.h>
dx=x1-x0;
dy=y1-y0;
x=x0;
y=y0;
p=2*dy-dx;
while(x<x1)
if(p>=0)
putpixel(x,y,7);
y=y+1;
p=p+2*dy-2*dx;
else
putpixel(x,y,7);
p=p+2*dy;}
x=x+1;
int main()
return 0;
getch();
closegraph();
Output :-
#include<conio.h>
#include<stdio.h>
int main()
int x,y,x_mid,y_mid,radius,dp;
int g_mode,g_driver=DETECT;
initgraph(&g_driver,&g_mode,"");
scanf("%d %d",&x_mid,&y_mid);
scanf("%d",&radius);
x=0;
y=radius;
dp=1-radius;
do
putpixel(x_mid+x,y_mid+y,YELLOW);
putpixel(x_mid+y,y_mid+x,RED);
putpixel(x_mid-y,y_mid+x,WHITE);
putpixel(x_mid-x,y_mid+y,BLUE);
putpixel(x_mid-x,y_mid-y,GREEN);
putpixel(x_mid-y,y_mid-x,BROWN);
putpixel(x_mid+y,y_mid-x,WHITE);
putpixel(x_mid+x,y_mid-y,RED);
if(dp<0) {
dp+=(2*x)+1;
else{
y=y-1;
dp+=(2*x)-(2*y)+1;
x=x+1;
}while(y>x);
getch();
OUTPUT :-
2D TRANSFORMATIONS :-
1) TRANSLATION :-
#include<conio.h>
#include<graphics.h>
#include<stdio.h>
int main()
{
int gd=DETECT,gm;
int x,y,x1,y1,x2,y2,tx,ty;
initgraph(&gd,&gm,"");
printf("\n Please enter first coordinate of the triangle= ");
scanf("%d %d", &x,&y);
printf("\n Enter second coordinate of the trinagle = ");
scanf("%d %d",&x1,&y1);
printf("\n Enter third coordinate of the triangle = ");
scanf("%d %d",&x2,&y2);
printf("\n\t\t********** TRIANGLE before & after translation ***********");
line(x,y,x1,y1);
line(x1,y1,x2,y2);
line(x2,y2,x,y);
printf("\n Now enter the translation vector = ");
scanf("%d %d",&tx,&ty);
setcolor(RED);
line(x+tx,y+ty,x1+tx,y1+ty);
line(x1+tx,y1+ty,x2+tx,y2+ty);
line(x2+tx,y2+ty,x+tx,y+ty);
getch();
closegraph();
}
OUTPUT :-
2) ROTATION :-
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <math.h>
void TriAngle(int x1, int y1, int x2, int y2, int x3, int y3);
void Rotate(int x1, int y1, int x2, int y2, int x3, int y3, float angle);
int main() {
int gd = DETECT, gm;
int x1, y1, x2, y2, x3, y3;
initgraph(&gd, &gm, "");
printf("Enter the 1st point for the triangle:");
scanf("%d%d", &x1, &y1);
printf("Enter the 2nd point for the triangle:");
scanf("%d%d", &x2, &y2);
printf("Enter the 3rd point for the triangle:");
scanf("%d%d", &x3, &y3);
TriAngle(x1, y1, x2, y2, x3, y3);
float angle;
Output :-
3) SCALING:-
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
int main(){
int x,y,x1,y1,x2,y2;
int scl_fctr_x,scl_fctr_y;
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
scanf("%d %d",&x,&y);
scanf("%d %d",&x1,&y1);
scanf("%d %d",&x2,&y2);
line(x,y,x1,y1);
line(x1,y1,x2,y2);
line(x2,y2,x,y);
scanf("%d %d",&scl_fctr_x,&scl_fctr_y);
x = x* scl_fctr_x;
x1 = x1* scl_fctr_x;
x2 = x2* scl_fctr_x;
y = y* scl_fctr_y;
y1 = y1* scl_fctr_y;
y2= y2 * scl_fctr_y ;
line(x,y,x1,y1);
line(x1,y1,x2,y2);
line(x2,y2,x,y);
getch();
closegraph();
OUTPUT :-
#include<conio.h>
#include<stdio.h>
#include<math.h>
int main()
int rcode_begin[4]={0,0,0,0},rcode_end[4]={0,0,0,0},region_code[4];
int W_xmax,W_ymax,W_xmin,W_ymin,flag=0;
float slope;
int gr=DETECT,gm;
initgraph(&gr,&gm,"");
scanf("%d %d",&W_xmin,&W_ymin);
scanf("%d %d",&W_xmax,&W_ymax);
scanf("%d %d",&x,&y);
scanf("%d %d",&x1,&y1);
cleardevice();
rectangle(W_xmin,W_ymin,W_xmax,W_ymax);
line(x,y,x1,y1);
line(0,0,600,0);
line(0,0,0,600);
if(y>W_ymax) {
rcode_begin[0]=1; // Top
flag=1 ;
if(y<W_ymin) {
rcode_begin[1]=1; // Bottom
flag=1;
if(x>W_xmax) {
rcode_begin[2]=1; // Right
flag=1;
if(x<W_xmin) {
rcode_begin[3]=1; //Left
flag=1;
if(y1>W_ymax){
rcode_end[0]=1; // Top
flag=1;
if(y1<W_ymin) {
rcode_end[1]=1; // Bottom
flag=1;
if(x1>W_xmax){
rcode_end[2]=1; // Right
flag=1;
if(x1<W_xmin){
rcode_end[3]=1; //Left
flag=1;
if(flag==0)
flag=1;
for(i=0;i<4;i++){
if(region_code[i]==1)
flag=0;
if(flag==0)
else{
slope=(float)(y1-y)/(x1-x);
y=y+(float) (W_xmin-x)*slope ;
x=W_xmin;
y=y+(float) (W_xmax-x)*slope ;
x=W_xmax;
x=x+(float) (W_ymax-y)/slope ;
y=W_ymax;
x=x+(float) (W_ymin-y)/slope ;
y=W_ymin;
y1=y1+(float) (W_xmin-x1)*slope ;
x1=W_xmin;
y1=y1+(float) (W_xmax-x1)*slope ;
x1=W_xmax;
x1=x1+(float) (W_ymax-y1)/slope ;
y1=W_ymax;
x1=x1+(float) (W_ymin-y1)/slope ;
y1=W_ymin;
delay(1000);
clearviewport();
rectangle(W_xmin,W_ymin,W_xmax,W_ymax);
line(0,0,600,0);
line(0,0,0,600);
setcolor(RED);
line(x,y,x1,y1);
getch();
closegraph();
OUTPUT :-