Показать сообщение отдельно
  #1  
Старый 23.04.2011, 20:09
cda cda вне форума
Прохожий
 
Регистрация: 23.04.2011
Сообщения: 5
Репутация: 10
По умолчанию Цифровой дифференциальный анализатор

Всем доброго вечера!

Протестируйте у себя, пожалуйста, работу алгоритма ЦДА. У меня компилируется очень долго, но так и не выводит результат(ошибок не выводит)

Код:
function Sign(s: Extended):Integer;
begin
if s>0 then Sign:=1;
if s<0 then Sign:=-1;
if s=0 then Sign:=0;
end;

 procedure drawdda(x1,y1,x2,y2:Integer);
 var deltaX, deltaY, i, lengthX, lengthY, length: Integer;
 var  x, y: Extended;
 begin
  lengthX:=Abs(x2-x1);
  lengthY:=Abs(y2-y1);
  begin
  if lengthX >= lengthY
  then length:=lengthX
  else length:=lengthY;
  end;
  deltaX:=Round( (x2-x1) / length );
  deltaY:=Round( (y2-y1) / length );
  x:=x1 + 0.5*Sign(deltaX);
  y:=y1 + 0.5*Sign(deltaY);


      begin
      i:=1;
      while i <= length do
      Form1.Image1.Canvas.Pixels[Round(x),Round(y)]:=clBlack;
      x:=x + deltaX;
      y:=y + deltaY;
      i:=i+1;
      end;

  end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  with Form1.Image1.Canvas do
drawdda(10,10,300,400);
end;
Ответить с цитированием