
Untitled
By: a guest on
May 7th, 2012 | syntax:
None | size: 1.26 KB | hits: 9 | expires: Never
procedure TMForm.ScenaPlasma1(X1,Y1,X2,Y2,V:integer;przesuniecie:Real;RuszaSie:Boolean;Speed:Real);
var
P,Q,X,Y,Hm,Wm: Integer;
Q1,Q2,RadWm,RadHm,SinR,CosR: Real;
B: Byte;
C1,C2,C3: Byte;
begin
R := R + Speed;
R2 := R2 + Speed/2;
R3 := R3 + Speed;
//if FirstRun then R := 0.1;
Hm := Y2 - Y1;
Wm := X2 - X1;
FirstRun := False;
with(Buffer.Canvas) do
begin
RadWm := Pi/(Wm/V);
RadHm := Pi/(Hm/V);
SinR := Sin(R+przesuniecie);
CosR := Cos(R+przesuniecie);
for P:=0 to (Hm div V) do
for Q:=0 to (Wm div V) do
begin
X := X1 div V + Q;
Y := Y1 div V + P;
if RuszaSie then
begin
Q1 := Sqr(SinR*Sin(R+przesuniecie-Q*RadWm)) * 4096;
Q2 := Sqr(CosR*Cos(R+przesuniecie+P*RadHm)) * 4096;
end
else
begin
Q1 := Sqr(SinR*Sin(R+przesuniecie-X*RadWm)) * 4096;
Q2 := Sqr(CosR*Cos(R+przesuniecie+Y*RadHm)) * 4096;
end;
B := 255-Round(Q1-Q2);
C1 := Round(Abs(Sin(R2+przesuniecie)) * B);
C2 := Round(Abs(Sin(R2 + przesuniecie + Pi*2/3)) * B);
C3 := Round(Abs(Sin(R2 + przesuniecie + Pi*2/6)) * B);
Brush.Style := bsSolid;
Brush.Color := RGB(C1,C2,C3);
FillRect(Rect(X*V+X,Y+Y*V,(X+1)*V+X,Y+(Y+1)*V));
end;
end;
end;