1 / 13

Fractali

Fractali. Cuprins. Defini ţie fractal Curba lui Koch pentru un triunghi echilateral Program C ++ pentru “ Curba lui Koch” Covorul lui Sierpinski Program C ++ pentru “Covorul lui Sierpinski” Program C ++ pentru “scara cu fractali” Importan ţa fractalilor Bibliografie STOP.

marty
Download Presentation

Fractali

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fractali

  2. Cuprins • Definiţie fractal • Curba lui Koch pentru un triunghi echilateral • Program C++ pentru “ Curba lui Koch” • Covorul lui Sierpinski • Program C++ pentru “Covorul lui Sierpinski” • Program C++ pentru “scara cu fractali” • Importanţa fractalilor • Bibliografie • STOP

  3. Definiţie fractal Un fractal este "o figură geometrică fragmentată sau frântă care poate fi divizată în părţi, astfel încât fiecare dintre acestea să fie (cel puţin aproximativ) o copie miniaturală a întregului". Termenul a fost introdus de Benoît Mandelbrot în 1975 şi este derivat din latinescul fractus, însemnând "spart" sau "fracturat".

  4. Curba lui Koch pentru un triunghi echilateral • Se consideră un triunghi echilateral. Fiecare latură a sa se împarte în trei segmente congruente, se elimină segmentul din mijloc şi se construieşte deasupra un triunghi echilateral. Herge von Koch a fost matematician suedez şi a imaginat această curbă în anul 1904.

  5. Program C++ pentru “ Curba lui Koch” #include<graphics.h> #include<iostream.h> #include<stdlib.h> #include<conio.h> #include<math.h> int gdriver,gmode,ls,L; void init() {gdriver=DETECT; initgraph(&gdriver,&gmode,"c:\\tC\\BGI"); if(graphresult()) { cout<<"Tentativa nereusita."; cout<<"Apasa o tasta pentru a inchide..."; getch(); exit(1); } }

  6. Program C++ pentru “ Curba lui Koch” void rotplan(int xc,int yc,int x1,int y1, int &x, int &y, float unghi) {x=ceil(xc+(x1-xc)*cos(unghi)-(y1-yc)*sin(unghi)); y=ceil(yc+(x1-xc)*sin(unghi)+(y1-yc)*cos(unghi)); } void desenez(int x1,int y1,int x2, int y2, int x3, int y3) {moveto(x1,y1); lineto(div((2*x1+x2),3).quot,div((2*y1+y2),3).quot); lineto(x3,y3); lineto(div((x1+2*x2),3).quot,div((y1+2*y2),3).quot); lineto(x2,y2);}

  7. Program C++ pentru “ Curba lui Koch” void generator(int x1,int y1, int x2,int y2, int n, int ls) {int x,y; rotplan(div((2*x1+x2),3).quot,div((2*y1+y2),3).quot, div((x1+2*x2),3).quot, div((y1+2*y2),3).quot,x,y,M_PI/3); if(n<ls) {generator(x1,y1,div((2*x1+x2),3).quot,div((2*y1+y2),3).quot,n+1,ls); generator(div((2*x1+x2),3).quot,div((2*y1+y2),3).quot,x,y,n+1,ls); generator(x,y,div((x1+2*x2),3).quot,div((y1+2*y2),3).quot,n+1,ls); generator(div((x1+2*x2),3).quot,div((y1+2*y2),3).quot,x2,y2,n+1,ls); } else desenez(x1,y1,x2,y2,x,y); }

  8. Program C++ pentru “ Curba lui Koch” void main() {cout<<"ls=";cin>>ls; randomize(); init(); setcolor(random(getmaxcolor())); L=getmaxx()-320; generator(160,getmaxy()-150,160+L,getmaxy()-150,1,ls); generator(160+L,getmaxy()-150,160+div(L,2).quot,getmaxy()-150-ceil(L*(sqrt(3)/2)),1,ls); generator(160+div(L,2).quot,getmaxy()-150-ceil(L*(sqrt(3)/2)),160,getmaxy()-150,1,ls); setfillstyle(1,4); floodfill(div(getmaxx(),2).quot,div(getmaxx(),2).quot,6); getch(); closegraph(); } Program executabil C++

  9. Covorul lui Sierpinski • Este o formă de repartizare a unor goluri pentru a modela o "sită naturală". Un pătrat plin este divizat în 9 părti egale din care se îndepărtează partea centrală. Rămân 8 pătrate negre prin eliminarea celui din mijloc

  10. Program C++ pentru “Covorul lui Sierpinski” #include <conio.h> #include <stdio.h> #include <math.h> #include <graphics.h> #include<dos.h> #include<stdlib.h> void fractal(int x,int y,int k) { rectangle(x-k/2,y-k/2,x+k/2,y+k/2); line(x-k/2,y-k/6,x+k/2,y-k/6); line(x-k/2,y+k/6,x+k/2,y+k/6); line(x-k/6,y-k/2,x-k/6,y+k/2); line(x+k/6,y-k/2,x+k/6,y+k/2); delay(10); floodfill(x,y,WHITE); if (k>5) {fractal(x-3*k/4,y,k/2); fractal(x+3*k/4,y,k/2); fractal(x,y-3*k/4,k/2); fractal(x,y+3*k/4,k/2);} } void main() {int cul,gd,gm; gd=DETECT; randomize(); initgraph(&gd,&gm,"c:\\tc\\bgi"); int x=300,y=250,k=150; fractal(x,y,k); getch(); closegraph();} Program executabil C++

  11. Program C++ pentru “scara cu fractali” #include <conio.h> #include <stdio.h> #include <math.h> #include <graphics.h> #include<dos.h> #include<stdlib.h> void fractal(int x,int y,int k) {delay(10); setcolor(random(15)); rectangle(x-k/2,y-k/2,x+k/2,y+k/2); if (k>5) {fractal(x-3*k/4,y,k/2); fractal(x+3*k/4,y,k/2); fractal(x,y-3*k/4,k/2); fractal(x,y+3*k/4,k/2);} } void main() {int cul,gd,gm; randomize(); gd=DETECT; initgraph(&gd,&gm,"c:\\tc\\bgi"); int x=300,y=250,k=150; fractal(x,y,k); getch(); closegraph();} Program executabil C++

  12. Aceste forme geometrice au fost considerate în trecut haotice sau “aberaţii geometrice”, iar multe dintre ele erau atât de complexe încât necesitau calculatoare performante pentru a le vizualiza. Pe parcurs, domenii ştiinţifice ca fizica, chimia, biologia sau meteorologia descopereau elemente asemănătoare cu fractalii în viaţa reală. Fractalii au proprietăţi matematice extrem de interesante, care de multe ori contrazic aparenţa, dar acestea depăşesc cu mult cunoştinţele de matematică din liceu. Importanţa fractalilor

  13. Bibliografie • http://ro.wikipedia.org/wiki/Fractal • http://infoscience.3x.ro/c++/exfractali.htm • Manual de informatică intensiv – clasa a XI-a – Vlad Huţanu, Tudor Sorin, ed. L&S Soft Profesor Liliana Şchiopu

More Related