Cum de a desena un fractal
Pe un fractal simplu - este auto-similar la diferite scări de imagine. Ce înseamnă? Ei bine, de exemplu, imaginați-vă ecranul televizorului, care prezintă două TV cu ecran, fiecare dintre care arată, de asemenea două ecrane, și ei, la rândul lor ... In natura, comportamentul fractală este comun: ele sunt copaci, în cazul în care ramura cu tepi care amintesc de o copie mai mică a întregului arbore cu ramuri și sisteme de sânge de creaturi vii, și coastele continente. Apropo, cu o astfel de sarcină trivială ca măsurarea precisă a lungimii coastei insulelor și a început studiul fractalilor și conceptul legat de dimensiunea fracționată. După cum sa dovedit, lungimea liniei de coastă cu măsurarea mai exactă nu este angajat într-o anumită valoare, și vice-versa - este în continuă creștere. Gradul de această creștere a vitezei cu creșterea preciziei ca timpul și determină numărul numit dimensiune. Pentru diferite fractali (și respectiv - coastele) este numărul de diferite. De altfel, termenul de „fractal“ a fost introdus Benoit Mandelbrot, care a scris un articol de pionierat, „Care este lungimea liniei de coastă din Marea Britanie?“. Un recent a descoperit ca suprafata celulelor normale si canceroase - fractaliilor diferite dimensiuni (citire).
Deci, cum încă desena fractali frumoase. Metoda constă în faptul că, chiar dacă avem un avion. Noi luăm un punct pe ea cu coordonatele (X, Y) și să înceapă să investigheze acest punct, pentru a afla ce culoare să-l picteze. Care este punctul acestui studiu. Acesta se aplică într-o anumită conversie, astfel încât coordonatele punctului de a primi noile coordonate ale celorlalte puncte. De exemplu:
X1 = 2 * X * Y + C (1)
Y1 = X * X - Y * Y + D (2)
în care (X1, Y1) - coordonatele noului punct, C, D - sunt constante. Am făcut o iterație și verificați: dacă noul punct (X1, Y1) în afara unei zone predeterminate sau nu? În cazul în care pre-definit zona - un cerc cu un centru (0,0), și o rază R, atunci verificările de mai sus este de a lua în considerare inegalitățile
X1 * X1 + Y1 * Y1> R * R (3)
Dacă această inegalitate este îndeplinită, toate punctul de plecare este studiat, dacă nu, atunci se transformă din nou de mai sus (1) și (2), dar cu noile coordonate (X1, Y1)
X2 = 2 * * X1 Y1 + C
Y2 = X1 * X1 - Y1 * Y1 + D
Și pentru a face acest lucru până la un nou punct stare Xn, Yn satisfaceti (3) sau numărul de iterații depășește un număr predeterminat (de exemplu, 255). Astfel, fiecare punct de pornire (X, Y) ne dă un rezultat al acestor studii un număr N, care este egal cu numărul de iterații. Acest număr este necesar să se compare culoarea punctul de plecare. Apoi, întreaga procedură trebuie să fie făcut cu fiecare dintre punctele în plan. Asta e tot.
x1 = x + 275;
y1 = 275 - y;
pp = (y1 * 550 + x1) * 4;
Funcția plotp (x, y, r, g, b) // trage un punct la coordonatele normale
Pix [px (x, y)] = r;
Pix [px (x, y) +1] = g;
Pix [px (x, y) +2] = b;
Pix [px (x, y) 3] = 127;
>
// - funcția noastră principală, care determină modul în care să se uite fractal
Funcția fracționare (x, y, cx, cy, r)
var r1, n, x1, y1;
r1 = x * x + y + y;
n = 0; // contoriza numărul de iterații
x1 = x;
y1 = y;
în timp ce (r1 250)
>
var elem = document.getElementById ( 'myCanvas');
context var = elem.getContext ( '2d');
var w = 550 h = 550,
x = 0, y = 0;
imgd = context.getImageData (0, 0, w, h);
var = imgd.data pix;
var sx, sy; // această prejudecată, dacă vrem să vedem fractale departe de punctul (0,0)
sx = 800;
sy = -600;
m = 1000; // și că scara
pentru (x2 var = -250; x2
Câteva cuvinte despre parametrii stabilite mai sus codul JS:
sx = 800;
sy = -600;
m = 1000;
0,51, 0,1, 400 - în apel fracționare) funcția (
De ce aceste numere? „Poke“ metoda pentru a selecta astfel încât imaginea a fost frumos.
Daca ti-a placut materialul, vă rugăm să-l împărtășească cu prietenii tăi:
Nu legate de posturi