Поиск по сайту.


Другие алгоритмы.

Графика и обработка изображений. Фракталы.

Множество Мандельброта.

Даю исходник. Понять алгоритм не составит труда из статьи 'Введение во фракталы.'

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <dos.h>
#include <conio.h>

#define COLOR 100
#define MAS 0.9

typedef struct complex Complex;

void Sqr(Complex *z)
{
  Complex Fool=*z;

  z->x=Fool.x*Fool.x-Fool.y*Fool.y;
  z->y=2*Fool.x*Fool.y;
}

char GetColor(Complex zInit)
{
  Complex z=zInit;
  int Color=COLOR;

  while(z.x*z.x+z.y*z.y <= 4 && Color)
  {
    Sqr(&z);

    z.x+=zInit.x;
    z.y+=zInit.y;

    Color--;
  }

  return Color;
}

void DrawMandelSet(double xMin,double xMax,double yMin,double yMax)
{
  double xInc,yInc;
  Complex zInit;

  int y,x;

  char far *Screen=(char far *)MK_FP(0xa000,0);

  zInit.y=yMin;

  xInc=(xMax-xMin)/320;
  yInc=(yMax-yMin)/200;

  for(y=0;y<200;y++,zInit.y+=yInc)
  {
    zInit.x=xMin;

    for(x=0;x<320;x++,zInit.x+=xInc,Screen++)
    *Screen=GetColor(zInit);
  }
}

void main(void)
{
  _AX=0x13;geninterrupt(0x10);

  DrawMandelSet(-2*MAS,1*MAS,-1*MAS,1*MAS);

  getch();

  _AX=0x03;geninterrupt(0x10);
}



Вверх по странице, к оглавлению и навигации.