|
Тема |
Re: Брезенхайм [re: alfa] |
|
Автор |
c1ick (once) |
|
Публикувано | 24.11.05 22:29 |
|
|
Те ти го те:
// Bresenham Algorithm----------
If tmpDeltaP.Y > tmpDeltaP.X then begin
tmpFrac := Round((tmpDeltaP.X*2) - tmpDeltaP.Y);
while (tmpNextP.Y <> tmpTargP.Y) do begin
If tmpFrac >= 0 then begin
tmpNextP.X := tmpNextP.X + tmpStepX;
tmpFrac := Trunc(tmpFrac - tmpDeltaP.Y);
end;
tmpNextP.Y := tmpNextP.Y + tmpStepY;
tmpFrac := Round(tmpFrac + tmpDeltaP.X);
SetLength(FPath, i+1);
FPath[ i ].X := tmpNextP.X;
FPath[ i ].Y := tmpNextP.Y;
inc(i);
end; { while }
end
else begin
tmpFrac := Round((tmpDeltaP.Y*2) - tmpDeltaP.X);
while (tmpNextP.X <> tmpTargP.X) do begin
If tmpFrac >= 0 then begin
tmpNextP.Y := tmpNextP.Y + tmpStepY;
tmpFrac := Round(tmpFrac - tmpDeltaP.X);
end;
tmpNextP.X := tmpNextP.X + tmpStepX;
tmpFrac := Trunc(tmpFrac + tmpDeltaP.Y);
SetLength(FPath, i+1);
FPath[ i ].X := tmpNextP.X;
FPath[ i ].Y := tmpNextP.Y;
inc(i);
end; { while }
end;
Те ти го, ма на Делфи. На C шси го преведеш сам/а.
Редактирано от c1ick на 24.11.05 22:31.
|
| |
|
|
|