Вот нужно переделать код из паскаля в делфи, но проблема возникла с цветами, помогите пожалуйста
Код паскаля:
Program N3; Uses Graph, Crt; Type TComplex = Record X : Real; Y : Real; End; Const iter = 50; max = 1e+6; min = 1e-6; Var z, t, d : TComplex; p : Real; x, y, n : Integer; Cancel : Boolean; gd, gm : Integer; mx, my : Integer; Begin Cancel := False; Randomize; gd := Detect; InitGraph(gd,gm,'c:\bp\bgi'); Mx := GetMaxX div 2; My := GetMaxY div 2; For y := -my to my do For x := -mx to mx do Begin n := 0; z.x := X * 0.005; z.y := Y * 0.005; d := z; While (sqr(z.x)+sqr(z.y) < max) and (sqr(d.x)+sqr(d.y) > min) and (n < iter) do Begin t := z; {z^3 - 1} p := sqr(sqr(t.x)+sqr(t.y)); z.x := 2/3*t.x + (sqr(t.x)-sqr(t.y))/(3*p); z.y := 2/3*t.y*(1-t.x/p);{} d.x := abs(t.x - z.x); d.y := abs(t.y - z.y); Inc(n); If keypressed then cancel := true; End; PutPixel(mx + x,my + y,16 - (n mod 16)); If cancel then exit; End; Readkey; CloseGraph; end.
И то, что я пробовал в делфи, но выводит просто черный экран, подозреваю, что с цветами что-то не так сделал Там фрактал должен получиться
Const iter = 50; max = 1e+6; min = 1e-6;
Type TComplex = Record X : Real; Y : Real; End;
procedure TForm1.Button1Click(Sender: TObject);
Var z, t, d : TComplex; p : Real; x, y, n : Integer; mx, my : Integer; Begin
Randomize; Mx := 320; My := 240; For y := -my to my do For x := -mx to mx do Begin n := 0; z.x := X * 0.005; z.y := Y * 0.005; d := z; While (sqr(z.x)+sqr(z.y) < max) and (sqr(d.x)+sqr(d.y) > min) and (n < iter) do Begin t := z; p := sqr(sqr(t.x)+sqr(t.y)); z.x := 2/3*t.x + (sqr(t.x)-sqr(t.y))/(3*p); z.y := 2/3*t.y*(1-t.x/p);{} d.x := abs(t.x - z.x); d.y := abs(t.y - z.y); Inc(n); End; image1.canvas.Pixels[mx + x,my + y]:=round(16 - (n div 16));
End; end;
Сообщение отредактировано: cooler - 30.11.2008 22:07