Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Фрактал   Slava Arharov   20 May 2001 22:29:49 
 Фрактал   Aleksey Malov   22 May 2001 21:31:26 
 Фрактал   Dan Raskovalov   22 May 2001 00:51:44 
 Фрактал   Andrey Paniukov   24 May 2001 22:54:33 
 Re: Фрактал   Michael Ryazanov   21 May 2001 21:40:00 
Архивное /ru.algorithms/44613b09b859.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional