koch,snowflake,transformation added

This commit is contained in:
Tanmay 2023-11-23 12:23:20 +05:30
parent 0bfdd0dc89
commit a4f34bc01b
3 changed files with 227 additions and 0 deletions

49
Koch-Curve.cpp Normal file
View File

@ -0,0 +1,49 @@
#include<iostream>
#include<graphics.h>
#include<cmath>
using namespace std;
void koch(int x1,int y1,int x2,int y2,int it)
{
float angle = (60*3.14)/180;
int x3 = (2*x1 + x2)/3;
int y3 = (2*y1 + y2)/3;
int x4 = (2*x2 + x1)/3;
int y4 = (2*y2 + y1)/3;
int x = x3+ (x4-x3)*cos(angle) + (y4-y3)*sin(angle);
int y = y3 - (x4-x3)*sin(angle) + (y4-y3)*cos(angle);
if(it>0)
{
koch(x1,y1,x3,y3,it-1);
koch(x3,y3,x,y,it-1);
koch(x,y,x4,y4,it-1);
koch(x4,y4,x2,y2,it-1);
}
else
{
line(x1,y1,x3,y3);
line(x3,y3,x,y);
line(x,y,x4,y4);
line(x4,y4,x2,y2);
}
}
int main()
{
int gd = DETECT,gm;
initgraph(&gd,&gm,NULL);
int x1,y1,x2,y2,order;
cout<<"Enter value of x1: ";
cin>>x1;
cout<<"Enter value of y1: ";
cin>>y1;
cout<<"Enter value of x2: ";
cin>>x2;
cout<<"Enter value of y2: ";
cin>>y2;
cout<<"Enter order of curve: ";
cin>>order;
koch(x1,y1,x2,y2,order);
delay(10000);
return 0;
}

54
Snowflake.cpp Normal file
View File

@ -0,0 +1,54 @@
#include<iostream>
#include<graphics.h>
#include<cmath>
using namespace std;
void koch(int x1,int y1,int x2,int y2,int it)
{
float angle = (60*3.14)/180;
int x3 = (2*x1 + x2)/3;
int y3 = (2*y1 + y2)/3;
int x4 = (2*x2 + x1)/3;
int y4 = (2*y2 + y1)/3;
int x = x3+ (x4-x3)*cos(angle) + (y4-y3)*sin(angle);
int y = y3 - (x4-x3)*sin(angle) + (y4-y3)*cos(angle);
if(it>0)
{
koch(x1,y1,x3,y3,it-1);
koch(x3,y3,x,y,it-1);
koch(x,y,x4,y4,it-1);
koch(x4,y4,x2,y2,it-1);
}
else
{
line(x1,y1,x3,y3);
line(x3,y3,x,y);
line(x,y,x4,y4);
line(x4,y4,x2,y2);
}
}
int main()
{
int gd = DETECT,gm;
initgraph(&gd,&gm,NULL);
int x1,y1,x2,y2,order;
float angle = (60*3.14)/180;
cout<<"Enter value of x1: ";
cin>>x1;
cout<<"Enter value of y1: ";
cin>>y1;
cout<<"Enter value of x2: ";
cin>>x2;
cout<<"Enter value of y2: ";
cin>>y2;
cout<<"Enter order of curve: ";
cin>>order;
int x3 = x1 + (x2-x1)*cos(angle) + (y2-y1)*sin(angle);
int y3 = y1 - (x2-x1)*sin(angle) + (y2-y1)*cos(angle);
koch(x1,y1,x2,y2,order);
koch(x1,y1,x3,y3,order);
koch(x3,y3,x2,y2,order);
delay(10000);
return 0;
}

124
Transformation.cpp Normal file
View File

@ -0,0 +1,124 @@
#include<iostream>
#include<graphics.h>
#include<cmath>
using namespace std;
int main()
{
int gd = DETECT,gm;
initgraph(&gd,&gm,NULL);
int b[3][3];
int d;
cout<<"Enter value of x1: ";
cin>>b[0][0];
cout<<"Enter value of y1: ";
cin>>b[1][0];
cout<<"Enter value of x2: ";
cin>>b[0][1];
cout<<"Enter value of y2: ";
cin>>b[1][1];
cout<<"Enter value of x3: ";
cin>>b[0][2];
cout<<"Enter value of y3: ";
cin>>b[1][2];
b[2][0] = b[2][1] = b[2][2];
setcolor(RED);
line(b[0][0],b[1][0],b[0][1],b[1][1]);
line(b[0][1],b[1][1],b[0][2],b[1][2]);
line(b[0][2],b[1][2],b[0][0],b[1][0]);
delay(5000);
cout<<"\nYour Choices Are!! \n";
cout<<"1. Translation: \n2. Scaling: \n3. Rotation: ";
cout<<"\nEnter your choice: ";
cin>>d;
switch(d)
{
case 1:
{
float a[3][3],c[3][3];
cout<<"\nEnter value value of tx and ty: ";
cin>>a[0][2]>>a[1][2];
a[0][0] = a[1][1] = a[2][2] = 1;
a[1][0] = a[2][0] = a[0][1] = a[2][1] = 0;
for(int i = 0; i<3; i++)
{
for(int j = 0; j<3; j++)
{
c[i][j] = 0;
for(int k = 0; k<3; k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
setcolor(BLUE);
line(c[0][0],c[1][0],c[0][1],c[1][1]);
line(c[0][1],c[1][1],c[0][2],c[1][2]);
line(c[0][2],c[1][2],c[0][0],c[1][0]);
delay(5000);
break;
}
case 2:
{
float sx,sy;
float a[3][3],c[3][3];
cout<<"\nEnter value value of sx and sy: ";
cin>>a[0][0]>>a[1][1];
a[2][2] = 1;
a[0][1] = a[0][2] = a[1][0] = a[1][2] = a[2][0] = a[2][1] = 0;
for(int i = 0; i<3; i++)
{
for(int j = 0; j<3; j++)
{
c[i][j] = 0;
for(int k = 0; k<3; k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
setcolor(BLUE);
line(c[0][0],c[1][0],c[0][1],c[1][1]);
line(c[0][1],c[1][1],c[0][2],c[1][2]);
line(c[0][2],c[1][2],c[0][0],c[1][0]);
delay(5000);
break;
}
case 3:
{
float z, A;
float a[3][3];
float c[3][3];
cout<<"\nEnter the angle: ";
cin>>z;
A = (z*3.14)/180;
a[2][2] = 1;
a[0][2] = a[1][2] = a[2][0] = a[2][1] = 0;
a[0][0] = a[1][1] = cos(A);
a[0][1] = sin(A);
a[1][0] = (-sin(A));
for(int i = 0; i<3; i++)
{
for(int j = 0; j<3; j++)
{
c[i][j] = 0;
for(int k = 0; k<3; k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
setcolor(BLUE);
line(c[0][0],c[1][0],c[0][1],c[1][1]);
line(c[0][1],c[1][1],c[0][2],c[1][2]);
line(c[0][2],c[1][2],c[0][0],c[1][0]);
delay(5000);
break;
}
default:
cout<<"\nEnter valid choice!!";
break;
}
return 0;
}