Броуновское движение

brown.jpg

Построить траекторию Броуновского движения.

Броуновскую кривую можно представить
как фрактальную кривую.

указываем точку из которой начинается построение фрактала

присваиваем dx и dy числа от 0 до 3

задаем границы экрана

если фрактал выходит за границы экрана изменяется направление

в результате получаем Броуновскую кривую

void main() {
 
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <conio.h>
 
int main () {
   int   GD, GM, X, Y, dX, dY, I;
 
     int gdriver = DETECT, gmode, errorcode;
 
     /* initialize graphics mode */
     initgraph(&gdriver, &gmode, "C:\\BORLANDC\\BGI");
 
     /* read result of initialization */
     errorcode = graphresult();
 
     if (errorcode != grOk)  /* an error occurred */
         {
         printf("Graphics error: %s\n", grapherrormsg(errorcode));
         printf("Press any key to halt:");
         getch();
         exit(1);             /* return with error code */
         }
 
 
     X=639 / 2;         
     Y=470 / 2;
     moveto(X,Y);
 
     do {
 
        dX=random(3)-1;
        dY=random(3)-1;
 
        if (X+dX <   0) X=X-dX; else X=X+dX;
        if (X+dX > 640)  X=X-dX; X=X+dX;
        if (Y+dY <   0)  Y=Y-dY; Y=Y+dY;
        if (Y+dY > 480)  Y=Y-dY; else Y =Y+dY;
 
        setcolor(YELLOW);
        lineto(X,Y);
 
        for (I=1; I<100; I++)
        putpixel(random(640),random(480),BLACK);
        } 
     while ( !kbhit() );
     closegraph();
     return 0;
}
}

Ключевые слова: 
Brown
ВложениеРазмер
brown.rar23.99 кб