From a4f34bc01b31a8b32336e582d4a0a9e72de832c8 Mon Sep 17 00:00:00 2001 From: TanmaySpamzzz Date: Thu, 23 Nov 2023 12:23:20 +0530 Subject: [PATCH] koch,snowflake,transformation added --- Koch-Curve.cpp | 49 ++++++++++++++++++ Snowflake.cpp | 54 ++++++++++++++++++++ Transformation.cpp | 124 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 227 insertions(+) create mode 100644 Koch-Curve.cpp create mode 100644 Snowflake.cpp create mode 100644 Transformation.cpp diff --git a/Koch-Curve.cpp b/Koch-Curve.cpp new file mode 100644 index 0000000..212f854 --- /dev/null +++ b/Koch-Curve.cpp @@ -0,0 +1,49 @@ +#include +#include +#include +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; +} diff --git a/Snowflake.cpp b/Snowflake.cpp new file mode 100644 index 0000000..eab94f5 --- /dev/null +++ b/Snowflake.cpp @@ -0,0 +1,54 @@ +#include +#include +#include +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; +} diff --git a/Transformation.cpp b/Transformation.cpp new file mode 100644 index 0000000..2ec8c2a --- /dev/null +++ b/Transformation.cpp @@ -0,0 +1,124 @@ +#include +#include +#include +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; +}