31
Fractals

Fractals Final

Embed Size (px)

DESCRIPTION

learn fractals in C

Citation preview

Page 1: Fractals Final

Fractals

Page 2: Fractals Final

Fractals

• A fractal is an object that displays self-similarity, in a somewhat technical sense, on all scales.

• The object need not exhibit exactly the same structure at all scales, but the same "type" of structures must appear on all scales.

Page 3: Fractals Final

Fractals

• Fractals are geometric objects.

• Many real-world objects like ferns are shaped like fractals.

• Fractals are formed by iterations or by recursion.

• Fractals are self-similar.

• In computer graphics, we use fractal functions to create complex objects.

Page 4: Fractals Final

Koch Fractals (Snowflakes)

Iteration 0 Iteration 1 Iteration 2 Iteration 3

Generator1/3 1/3

1/3 1/3

1

Page 5: Fractals Final

Fractal Tree

Iteration 1 Iteration 2 Iteration 3 Iteration 4 Iteration 5

Generator

Page 6: Fractals Final

Fractal Fern

Generator

Iteration 0 Iteration 1 Iteration 2 Iteration 3

Page 7: Fractals Final
Page 8: Fractals Final

Drawing of a line using recursion

(x1,y1)

(x1+1,y1+1)

(x2,y2)

(x1+n,y1+n)

Page 9: Fractals Final

Drawing of a line using recursion#include<stdio.h>#include<conio.h>#include<graphics.h>int rec(int x1, int y1, int x2, int y2){

if(x1==x2 && y1 == y2)return 0;

else{

putpixel(x1, y1, 125);rec(x1+1,y1+1, x2, y2);

}return 0;

}

Page 10: Fractals Final

Drawing of a line using recursion

void main(){

int a1=100, a2=100, a3=150, a4=150;int gd=DETECT, gm;clrscr();initgraph(&gd, &gm, "c:\\tc\\bgi");rec(a1, a2, a3, a4);getch();

}

Page 11: Fractals Final

Drawing of rectangles within rectangle

Iteration=1, do nothingIteration =2,

Iteration =3,

Iteration =4,

Page 12: Fractals Final

Drawing of rectangles within rectangle

#include<stdio.h>#include<conio.h>#include<graphics.h>#include<dos.h>int p(int x , int y , int n, int l);void main(){

int gd=DETECT,gm,x=20,y=30,n,l;initgraph(&gd,&gm,"c:\\tc\\bgi"); printf("enter the level(1-5):"); scanf("%d",&n); printf("enter the length of the sqr(>50):"); scanf("%d",&l); p(x,y,n,l); getch(); closegraph();

}

Page 13: Fractals Final

p(int x , int y , int n, int l){

setcolor(3); if(n==1){

return 0; } else {

p(x+l/4,y+l/4,n-1,l/2);rectangle(x,y,x+l,y+l);delay(50);

}return 0;

}

Page 14: Fractals Final

Sierpinski Triangle

Page 15: Fractals Final

Sierpinski Triangle

For i=1, do nothing

For I =2, (x1,y1)

(x2,y2) (x3,y3)

Page 16: Fractals Final

Sierpinski Triangle

For I =3, Inside this triangle, draw a smaller upside down triangle.

It's corners should be exactly in the centers of the sides of the large triangle:

(x1,y1)

(x2,y2) (x3,y3)

(x1+x2)/2,(y1+y2)/2(x1+x3)/2,(y1+y3)/2

(x2+x3)/2,(y2+y3)/2

Page 17: Fractals Final

Sierpinski Triangle

For i=4, Now, draw 3 smaller triangles in each of the 3 triangles that are pointing upwards, again with the corners in the centers of the sides of the triangles that point upwards

Page 18: Fractals Final

Sierpinski Triangle

• For I =5, Now there are 9 triangles pointing upwards. In each of these 9, draw again smaller upside down triangles:

Page 19: Fractals Final

Sierpinski Triangle

• For i=6, In the 27 triangles pointing upwards, again draw 27 triangles pointing downwards:

Page 20: Fractals Final

Sierpinski Triangle#include<stdio.h>#include<conio.h>#include<graphics.h>#include<dos.h>p(int , int , int , int , int, int, int);void main(){ int gd=DETECT,gm,x1,y1,x2,y2,x3,y3,n; initgraph(&gd,&gm,"c:\\tc\\bgi");

printf("enter the level(1-5):"); scanf("%d",&n); printf("Enter coordinates of triangle"); scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3); p(x1,y1,x2,y2,x3,y3,n); getch(); closegraph();}

Page 21: Fractals Final

Sierpinski Trianglep(int x1, int y1 , int x2, int y2, int x3, int y3,int n){ setcolor(3); if(n==1)

{return 0;

} else { line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x1,y1);

p(x1,y1,(x1+x2)/2, (y1+y2)/2,(x1+x3)/2,(y1+y3)/2,n-1);p((x1+x2)/2, (y1+y2)/2,x2,y2,(x2+x3)/2,(y2+y3)/2,n-1);p((x1+x3)/2,(y1+y3)/2,x3,y3,(x2+x3)/2,(y2+y3)/2,n-1);delay(50);

}}

Page 22: Fractals Final

Another example of fractal

Page 23: Fractals Final

#include<stdio.h>#include<conio.h>#include<graphics.h>#include<dos.h>p(int x , int y , int n , float l);void main(){

int gd=DETECT,gm,x=20,y=30,n,l; initgraph(&gd,&gm,"c:\\tc\\bgi"); printf("enter the level(1-5):"); scanf("%d",&n); printf("enter the length of the sqr(>50):"); scanf("%d",&l); p(x,y,n,l); getch(); closegraph();

}

Page 24: Fractals Final

p(int x , int y , int n, float l ){

setcolor(3); if(n==1) {

rectangle(x,y,x+l,y+l); }

else {

p(x,y,n-1,l/3);p(x + (2*l/3),y,n-1,l/3);p(x,y + (2*l)/3,n-1,l/3);p(x + (2*l)/3,y + (2*l/3),n-1,l/3);p(x + l/3,y + l/3,n-1,l/3);delay(50);

}return 0;

}

Page 25: Fractals Final

Koch Curve

Page 26: Fractals Final

The Koch Curve FractalThe Koch Curve is a fractal that starts with a simple pattern made of a line that is divided into 3 equal parts.

Erase the middle segment and replace it with an upsidedown “V” shape, and now the whole pattern is made up of four line segments.

Page 27: Fractals Final

The Koch Curve Fractal

Next, we do the same thing again. Each of those four lines is divided in thirds, and the middle segment is replaced with a “V”. There are now 4x4 or 16 line segments.

Page 28: Fractals Final

The Koch Curve FractalSo next, we’ll replace each of the 16 line

segments with the same pattern again.

Page 29: Fractals Final

The Koch Curve#include<stdio.h>#include<conio.h>#include<graphics.h>#include<dos.h>#include<math.h>void p(int x , int y ,int x1, int y1, int n);void main(){

int gd=DETECT,gm,xl=100,yl=100,xr=300,yr=100,n,l; initgraph(&gd,&gm,"c:\\tc\\bgi"); printf("enter the level(1-5):"); scanf("%d",&n); p(xl,yl,xr,yr,n); getch(); closegraph();

}

Page 30: Fractals Final

void p(int xl , int yl , int xr, int yr, int n){ int x1,y1,x2,y2,x3,y3,xc,yc; setcolor(3); if(n==1)

{line(xl,yl,xr,yr); }

else {x1=(2*xl+xr)/3;y1=(2*yl+yr)/3;x2=(xl+2*xr)/3;y2=(yl+2*yr)/3;xc=(xl+xr)/2;yc=(yl+yr)/2;x3=xc+ sqrt(3)*(y2-yc);y3=yc+ sqrt(3)*(xc-x2);p(xl,yl,x1,y1,n-1);p(x1,y1,x3,y3,n-1);p(x3,y3,x2,y2,n-1);p(x2,y2,xr,yr,n-1);delay(500);

}}

Page 31: Fractals Final

Assignment 2

Draw koch snowflake for rectangle.