Bezier Curve Algorithm (C++)

Problem Definition: Write a program to analyse and interpret the implementation of Bezier Curves. #include<iostream.h> #include<conio.h> #include<dos.h> #include<graphics.h> void main(){ int gd=DETECT,gm; initgraph(&gd,&gm,”C:\\TC\\BGI”); int x[4],y[4],px,py,i; cout<<“Enter four control points of bezier curve: “; for(i=0;i<4;i++) cin>>x[i]>>y[i]; double t; for(t=0.0;t<=1.0;t+=0.001){ px=(1-t)*(1-t)*(1-t)*x[0]+3*t*(1-t)*(1-t)*x[1]+3*t*t*(1-t)*x[2]+t*t*t*x[3]; py=(1-t)*(1-t)*(1-t)*y[0]+3*t*(1-t)*(1-t)*y[1]+3*t*t*(1-t)*y[2]+t*t*t*y[3]; putpixel(px,py,WHITE); delay(2); } getch(); closegraph(); } Advertisements Continue reading Bezier Curve Algorithm (C++)

Sutherland-Hodgeman Polygon Clipping Algorithm (C++)

#include <iostream.h> #include <conio.h> #include <graphics.h> int xl,yl,xh,yh,poly[100],n; void left_clip(){ int temp[100],i,j=0,count=0,x1,y1,x2,y2; for(i=0;i<2*n;i+=2){ x1 = poly[i]; y1 = poly[i+1]; x2 = poly[i+2]; y2 = poly[i+3]; if(x1<xl && x2<xl){ //both points outside. Do not store any vertices }else if(x1>xl && x2>xl){ //both points inside. Store second vertex temp[j] = x2; temp[j+1] = y2; j+=2; count++; }else if(x1<xl && x2>xl){ //outside to inside. Store intersection n second … Continue reading Sutherland-Hodgeman Polygon Clipping Algorithm (C++)

Liang Barsky Line Clipping Algorithm (C++)

#include <conio.h> #include <iostream.h> #include <graphics.h> void main(){ int gdriver = DETECT, gmode; initgraph(&gdriver,&gmode,”C:\TC\BGI”); setcolor(BLUE); int xl,yl,xh,yh; cout<<“Enter bottom left and top right co-ordinates of the window: “; cin>>xl>>yl>>xh>>yh; rectangle(xl,yl,xh,yh); int x1,y1,x2,y2; cout<<“Enter endpoints of the line: “; cin>>x1>>y1>>x2>>y2; line(x1,y1,x2,y2); getch(); int p[4],q[4],i,accept=1;                               // To decide if line has to … Continue reading Liang Barsky Line Clipping Algorithm (C++)

Cohen-Sutherland Line Clipping Algorithm (C++)

#include <conio.h> #include <iostream.h> #include <graphics.h> static int LEFT=1,RIGHT=2,BOTTOM=4,TOP=8,xl,yl,xh,yh; int getcode(int x,int y){ int code = 0; //Peform Bitwise OR to get outcode if(y<yh) code |=TOP; if(y>yl) code |=BOTTOM; if(x<xl) code |=LEFT; if(x>xh) code |=RIGHT; return code; } void main(){ int gdriver = DETECT,gmode; initgraph(&gdriver,&gmode,”C:\TC\BGI”); setcolor(BLUE); cout<<“Enter bottom left and top right co-ordinates of window: “; cin>>xl>>yl>>xh>>yh; rectangle(xl,yl,xh,yh); int x1,y1,x2,y2; cout<<“Enter the endpoints of the … Continue reading Cohen-Sutherland Line Clipping Algorithm (C++)

2-D Transformations for an Object (C++)

Problem Definition: Write a program to implement 2-D Transformations viz., (a) Translation (b) Rotation (c) Scaling for an Object. #include <conio.h> #include <iostream.h> #include <graphics.h> #include <math.h> void main(){ int x1=200,y1=200,x2=250,y2=250,x3=180,y3=270,option; int gdriver = DETECT,gmode; initgraph(&gdriver,&gmode,”C:\TC\BGI”); do{ cleardevice(); gotoxy(1,1); line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x1,y1); cout<<“\n1.Translation 2.Scaling 3.Rotation 4.Exit\nEnter your choice: “; cin>>option; switch(option){ case 1: float tx,ty; cout<<“Enter tx & ty: “; cin>>tx>>ty; x1+=tx;x2+=tx;x3+=tx; y1+=ty;y2+=ty;y3+=ty; break; case 2: float sx,sy; … Continue reading 2-D Transformations for an Object (C++)