
23.04.2011, 20:09
|
Прохожий
|
|
Регистрация: 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;
|