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


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

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

Фракталы, Лист папоротника.



Uses Crt;

Const

a : array[0..3,0..2,0..3] of integer =

                        (((0,0,0,0),(0,20,0,0),(0,0,0,0)),

                        ((85,0,0,0),(0,85,11,70),(0,-10,85,0)),

                        ((31,-41,0,0),(10,21,0,21),(0,0,30,0)),

                        ((-29,40,0,0),(10,19,0,56),(0,0,30,0)));

Var

x,y,z : Integer;



procedure SetMode(Mode : Byte); assembler;

asm

   xor ax,ax

   mov al,[Mode]

   int 10h

end;





procedure PutPixel(X,Y:Integer;Color:Byte);assembler;

asm

   mov  ah,0Ch

   mov  al,[Color]

   mov  cx,[X]

   mov  dx,[Y]

   mov  bx,[0]

   int  10h

end;





Procedure Threedfern;

Var

 b   : array[1..100] of Integer;

 k : Byte;

 New_X,New_Y  : integer;

Begin

 repeat

 for k:=1 to 100 do

 begin

  b[k]:=random(5);

  if b[k]>3then b[k]:=1;

 end;

 for k:=1  to 100 do

 begin

  new_x:=(a[b[k],0,0]*x+a[b[k],0,1]*y+a[b[k],0,2]*z) div 100

            +a[b[k],0,3];

  new_y:=((a[b[k],1,0]*x+a[b[k],1,1]*y+a[b[k],1,2]*z) div 100)

            +a[b[k],1,3];

  z:= ((a[b[k],2,0]*x+a[b[k],2,1]*y+a[b[k],2,2]*z) div 100)

            +a[b[k],2,3];

  x:=New_X;y:=New_Y; Putpixel(350-x+z,380-y,2);

 end;

 until keypressed;

end;



Begin

      SetMode($8);

      Threedfern;

      SetMode(2);

End.




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