Jakim Opublikowano 13 Marca 2012 Udostępnij Opublikowano 13 Marca 2012 Z nudów napisałem gm81 generujący graficzną reprezentację najpopularniejszego fraktalu - zbioru Mandelbrota. F2 odpowiada za ustalanie granic powiększania, lewy przycisk myszy powiększa fraktal w wybranym miejscu (domyślnie 4-krotnie). https://gmclan.org/up506_14_fraktal.html Oczywiście, jak łatwo zauważyć, GM nie nadaje się do tworzenia fraktali, lepiej podpiąć to pod lepszy silnik rysowania. Kod: GML var pRe,pIm; for(xx=0; xx<room_width; xx+=1;) for(yy=0; yy<room_height; yy+=1;) { pRe=(xx/room_width)*abs(boundary_right-boundary_left)+boundary_left // wyznacz odcieta z plaszczyzny zespolonej z zasiegu (domyslnie -2;1) pIm=(yy/room_height)*abs(boundary_bottom-boundary_top)+boundary_bottom // wyznacz rzedna z plaszczyzny zespolonej z zasiegu (domyslnie -1;1) // zerowanie liczb zespolonych Re=0; Im=0; nRe=0; nIm=0; for(i=0; i<iterations; i+=1;) { // przypisz startym wartosci nowo otrzymane Re=nRe Im=nIm // f[a+bi] := a^2 + 2 abi - b^2 + pRe + pIm nRe = Re*Re-Im*Im+pRe; // Re(f[a+bi]) := a^2 - b^2 + pRe nIm = 2*Re*Im+pIm; // Im(f[a+bi]) := 2 abi + pIm // dla uproszczenia obliczen pomijamy punkty uciekajace do nieskonczonosci) if (nRe*nRe + nIm*nIm) > 4 break; } // wypelnij czarnym kolorem wnetrze draw_set_color(make_color_hsv(4*i mod 256, 255, 255*(i<iterations))) draw_point(xx,yy) // nieistotne if xx mod refresh_step = 0 screen_refresh(); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się