Главная страница по методам
оптимизаций

Главная страница
сайта

Написать письмо
автору

Эта процедура рисует линии уровня обратным сканирующим методом. Описание его работы читайте здесь.
//fragment of the cmath.pas
2003 (c) Meshchaninov Nick, (nsft.narod.ru)

procedure TfrmMain.InvScanLevels(Area:TDoubleRect;N:integer);
var i,j:integer;
    world:TWorldPoint;
    screen:TScreenPoint;
    mins,s,f:double;
begin
mins:=getMin(Area);
s:=(GetMax(Area)-mins)/N;
CopyScr.Free;
CopyScr:=TBitMap.Create;
CopyScr.Height:=pbOut.Height;
CopyScr.Width:=pbOut.Width;
for i:=0 to frmMain.pbOut.Width do
    for j:=0 to frmMain.pbOut.Height do
       begin
            screen.x:=i;screen.y:=j;
            Screen2World(Area,frmMain.pbOut.ClientRect,screen,world);
               f:=(func(world.x,world.y)-mins)/(s+1);
               if frac(f)< GetPrecision then
                begin
                 frmMain.pbOut.Canvas.Pixels[i,j]:=0;//rgb(trunc(255*f/N),trunc(255*f/N),trunc(255*f/N))
                 CopyScr.Canvas.Pixels[i,j]:=0
                end;
       end;{for}
pbOutPaint(pbOut);
end;


Главная страница по методам
оптимизаций

Главная страница
сайта

Написать письмо
автору



Hosted by uCoz