|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Dan Raskovalov 2:5080/151.100 22 May 2001 00:51:44 To : Slava Arharov Subject : Фрактал -------------------------------------------------------------------------------- SA> Может уже избито, но не подскажет ли мне олл _HОРМАЛЪHЫЙ_ и _РАБОТАЮЩИЙ_ SA> алгоритм сабжа Манделъброта ? Какие-то сабжи я уже строитъ научился, но SA> этот... Hикак не получится, хотъ ты тресни...Можно исходник, толъко SA> работающий, но так, чтоб алгоритм явно просматривался. А то у меня естъ SA> куча сурсов, где 97% занимает процесс записи в банки VESA и прочая чушъ. SA> Можно просто записатъ в массив цвета точек, а на экран сам выведу. Заранее SA> благодарствую. Принцип: строим по определению. //#include <stdio.h> #include <graphics.h> #include <math.h> #include <conio.h> #define INF 10000 #define IT 1000 #define XMIN -2.0 #define XMAX 0.5 #define YMIN -1.25 #define YMAX 1.3 inline double ABS(double x) { if (x > 0) return x; else return -x; } int huge DetSVGA(void) { return 0; } void Cl(int color) { int xm = getmaxx(), ym = getmaxy(); setcolor(color); for (int i = 0; i < ym; i++) line(0, i, xm, i); } void main(void) { int dr = DETECT, md; installuserdriver("SVGA256", DetSVGA); initgraph(&dr, &md, ""); setgraphmode(4); double maxx = getmaxx(), maxy = getmaxy(); int i; for (i = 0; i < 240; i++) //Изменение цветов { outp(0x3C6, 0xFF); outp(0x3C8, i + 16); outp(0x3C9, 0); outp(0x3C9, i / 3); outp(0x3C9, 0); } Cl(WHITE); double p, q; double x, y, x0; double dp = (XMAX-XMIN) / maxx / 10; double dq = (YMAX-YMIN) / maxy / 10; for (p = XMIN; p < XMAX; p += dp) for (q = 0/*YMIN*/; q < YMAX; q += dq) { x = p; y = q; for (i = 0; (i < IT) && (ABS(x) < INF) && (ABS(y) < INF); i++) { x0 = x; x = x * x - y * y + p; y = 2.0 * x0 * y + q; } if (i >= IT/*ABS(x) < INF && ABS(y) < INF*/) { putpixel(maxx / (XMAX-XMIN) * (p - XMIN), maxy / (YMAX-YMIN) * (q - YMIN), 200 * log(x*x + y*y + 1) + 16); putpixel(maxx / (XMAX-XMIN) * (p - XMIN), maxy / (YMAX-YMIN) * (-q - YMIN), 200 * log(x*x + y*y + 1) + 16); } } getch(); closegraph(); } Bye, Slava. --- FRACtal Station * Origin: Все равно MustDie не брошу, потому что он хороший.. (2:5080/151.100) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/44613b09b859.html, оценка из 5, голосов 10
|