Wednesday, September 12, 2012

C++ Code for generating Sierpinski gasket (triangle)

 C++ Code for generating Sierpinski gasket (triangle) 

My code for generating fractal using C++. Programming fractals is very interesting guys so try it out n have fun!!
Source code:
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
void fract(int p[],int n);
void main(){ int gd=DETECT,gm;
initgraph(&gd,&gm,"C:\\TC\\BGI");
cout<<"Enter vertices of triangle:";
int j=0,p[20],i,n;
do{
for(i=0;i<3;i++){
cout<<"\n x"<<i+1<<"& y"<<i+1<<":";
cin>>p[j];
j=j+1;
cin>>p[j];
j=j+1;}
} while(j<6);
p[6]=p[0];
p[7]=p[1];
drawpoly(4,p);
cout<<"enter no: of iterations:";
cin>>n;
fract(p,n);
getch();
}
void fract(int p[],int n)
{int a[8],m[8],b[8],c[8],i,k;
 for(i=0;i<8;i=i+2)          
{m[i]=(int)(p[i]+p[i+2])/2;
m[i+1]=(int)(p[i+1]+p[i+3])/2;
}
m[6]=m[0];
m[7]=m[1];
drawpoly(4,m);
k=n-1;
if(k!=0){
a[0]=p[0];a[1]=p[1];a[2]=m[0];a[3]=m[1];a[4]=m[4];a[5]=m[5];a[6]=p[0];a[7]=p[1];
fract(a,k);
b[0]=p[2];b[1]=p[3];b[2]=m[0];b[3]=m[1];b[4]=m[2];b[5]=m[3];b[6]=p[2];b[7]=p[3];
fract(b,k);
c[0]=p[4];c[1]=p[5];c[2]=m[2];c[3]=m[3];c[4]=m[4];c[5]=m[5];c[6]=p[4];c[7]=p[5];
fract(c,k);}
}

OUTPUT:


Saturday, September 8, 2012

This RESUME speaks louder than words!

A great example of re-inventing your resume with your creativity.check this out!

Monday, September 3, 2012

FLOOD FILL ALGORITHM

 FLOOD FILL ALGORITHM

This my own code for polygon filling using the flood dill algorithm. Hope you enjoy this!
Source code:
#include<conio.h>
#include<iostream.h>
#include<graphics.h>
void flood_rfill(int x,int y,int color);
void flood_lfill(int x,int y,int color);
void main()
{int gd=DETECT, gm ,n,i;
int x , y,p[20],color;
initgraph(&gd,&gm,"c:\\tc\\bgi");
cout<<"Enter no: of vertices for polygon:";
cin>>n;
int j=0;
do{
for(i=0;i<n;i++){
cout<<"\n x"<<i+1<<"& y"<<i+1<<":";
cin>>p[j];
j=j+1;
cin>>p[j];
j=j+1;}
} while(j<2*n);
p[2*n]=p[0];
p[2*n+1]=p[1];
drawpoly(n+1,p);
getch();
cout<<"Enter the seed point (x,y): ";
cin>>x>>y;
cout<<"Enter filling color value:";
cin>>color;
flood_rfill(x,y,color);
flood_lfill(x-1,y,color);
getch();
}
void flood_rfill(int x,int y,int color)
{if(getpixel(x,y) == 0)
{putpixel(x,y,color);
flood_rfill(++x,y,color);
x = x - 1 ;
flood_rfill(x,y-1,color);
flood_rfill(x,y+1,color);}
}
void flood_lfill(int x,int y,int color)
{if(getpixel(x,y) == 0)
{putpixel(x,y,color);
flood_lfill(--x,y,color);
x = x + 1 ;
flood_lfill(x,y-1,color);
flood_lfill(x,y+1,color);}
}

OUTPUT:

Saturday, September 1, 2012

PROGRAM FOR 3D TRANSFORMATION

                                       PROGRAM FOR 3D TRANSFORMATION


#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<ctype.h>
#include<math.h>
int s1,s2,h,w;
class trans
{public:
void draw();
void modified();
void translate();
void shearx();
void sheary();
void rotate();
void scale();
void assign();
int op[10],ip[10],mop[10],mip[10],i,dist;
}tr;
void trans::assign()
{op[0]=op[6]=op[8]=s1;
op[1]=op[3]=op[9]=s2;
op[2]=op[4]=s1+w;
op[5]=op[7]=s2+h;
ip[0]=ip[6]=ip[8]=s1+w/2;
ip[1]=ip[3]=ip[9]=s2-h/2;
ip[2]=ip[4]=s1+w+w/2;
ip[5]=ip[7]=s2+h-h/2;
}
void trans::draw()
{cleardevice();
setcolor(5);
drawpoly(5,op);
drawpoly(5,ip);
line(op[0],op[1],ip[0],ip[1]);
line(op[2],op[3],ip[2],ip[3]);
line(op[4],op[5],ip[4],ip[5]);
line(op[6],op[7],ip[6],ip[7]);
}
void trans::modified()
{setcolor(15);
drawpoly(5,mop);
drawpoly(5,mip);
line(mop[0],mop[1],mip[0],mip[1]);
line(mop[2],mop[3],mip[2],mip[3]);
line(mop[4],mop[5],mip[4],mip[5]);
line(mop[6],mop[7],mip[6],mip[7]);
}
void trans::translate()
{cout<<"\n Transition distance";
cin>>dist;
cleardevice();
draw();
for(i=0;i<10;i++)
{mop[i]=op[i]+dist;
mip[i]=ip[i]+dist;
}
modified();
}
void trans::shearx()
{cout<<"\n\t shearx factor";
cin>>dist;
cleardevice();
draw();
for(i=0;i<10;i=i+2)
{mop[i]=op[i]+(dist+op[i+1]);
mop[i+1]=op[i+1];
mip[i]=ip[i]+(dist+ip[i+1]);
mip[i+1]=ip[i+1];
}
modified();
}
void trans::sheary()
{cout<<"\n\t sheary factor";
cin>>dist;
cleardevice();
draw();
for(i=0;i<10;i=i+2)
{mop[i]=op[i];
mop[i+1]=dist+op[i]+op[i+1];
mip[i]=ip[i];
mip[i+1]=dist+ip[i]+ip[i+1];
}
modified();
}
void trans::rotate()
{int h,k;
float ang,rad;
cout<<"rotation angle";
cin>>ang;
rad=(3.14*ang)/180;
cout<<"\n\t rotate x by:";
cin>>h;
cout<<"\n\t rotate y by:";
cin>>k;
cleardevice();
draw();
for(int i=0;i<10;i=i+2)
{mop[i]=h+(op[i]-h)*cos(rad)-(op[i+1]-k)*sin(rad);
mop[i+1]=k+(op[i]-h)*sin(rad)+(op[i+1]-k)*cos(rad);
mip[i]=h+(ip[i]-h)*cos(rad)-(ip[i+1]-k)*sin(rad);
mip[i+1]=k+(ip[i]-h)*sin(rad)+(ip[i+1]-k)*cos(rad);
}
modified();
}
void trans::scale()
{int sx,sy;
cout<<"\n\t increment x by:";
cin>>sx;
cout<<"\n\t increment y by:";
cin>>sy;
cleardevice();
draw();
for(i=0;i<10;i++)
{if(i%2==0)
{mop[i]=op[i]*sx;
mip[i]=ip[i]*sx;
}
else
{mop[i]=op[i]*sy;
mip[i]=ip[i]*sy;
}}
modified();}
void main()
{char op,again;
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc\\bgi");
cout<<"\n\t Give cuboid co ordinate:";
cout<<"\n\t enter top left:";
cin>>s1>>s2;
cout<<"Enter height and width:";
cin>>h>>w;
tr.assign();
do
{cout<<"\n\t menu";
cout<<"\n\t.....";
cout<<"\n\t translate\n\t scale\n\t rotate";
cout<<"\n\t shearx\n\tsheary";
cout<<"\n\n\t I like to do transformation";
op=toupper(getch());
cout<<getch();
cleardevice();
switch(op)
{case 'T':
tr.translate();
break;
case 'S':
tr.scale();
break;
case 'X':
tr.shearx();
break;
case 'Y':
tr.sheary();
break;
case 'R':
tr.rotate();
break;
}cout<<"do once again:";
again=getch();
cleardevice();}
while(again!='n'&&again!='n');
getch();
closegraph();
}
OUTPUT: