Фрактал Барнсли2

1.jpg

Построение фрактала Барнсли

Для реализации данного фрактала необходимо реализовать следующие формулы :

z0 = pixel
c = Re + Imi
Если Re(z) * Im(c) + Re(c) * Im(z) >= 0 то z' = (z - 1) * c
иначе z' = (z + 1) * c

для 50ти итераций, при |z|<2

#include <conio.h>
#include <graphics.h>
#include <math.h>
#include <complex.h>
 
double sgn(double x) {  // реализация функции sign, определяющей знак числа
  double result;
  if (x>=0) {result=1;}
  else {result=-1;}
  return result;
}
void main() {
  int gd = DETECT, gm;          //иницилизация графики
  initgraph(&gd, &gm, "");
  int mx, my;
  complex c, z;
  int it=50, max=2;
  int k;
  mx = getmaxx() / 2;
  my = getmaxy() / 2;
 
  for (int x = -mx; x <= mx; x++) {     //задание комплексных z и с
    for (int y = -my; y <= my; y++) {
    z = complex(x*0.008, y*0.008);
    c = complex(0.6, 1.1);
    k = 0;
 
    while ((k < it)&&(abs(z) < max)) {
 
      if ((real(z)*imag(c)+real(c)*imag(z)) >= 0) z = c*(z-1); //непосредственные реобразования -            else {z = c*(z+1);                                                   //реализация формулы
      k++;
    }
    putpixel(mx+x, my+y, (k % 15)+1);
    }
  }
  getch();
  closegraph();
  return;
}

Ключевые слова: 
Фрактал Барнсли2
ВложениеРазмер
b.rar35.72 кб