|
Графика и обработка изображений. Фракталы.
Фракталы, Лист папоротника.
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.
Вверх по странице, к оглавлению и навигации.
| |