Авторизация

Логин: Пароль:
Регистрация Забыли свой пароль?

Алгоритм Брезенхема для рисования линий.

Страницы: 1
Алгоритм Брезенхема для рисования линий., нужен код.
Здравствуйте! Есть ли у кого готовая реализация алгоритма Брезенхема для рисования линий на Турбо-Паскале. Буду признателен, если вы поделитесь smile;) .
Вот, например, такая:
Код
procedure drawLine(x1,y1,x2,y2:integer);

var i: integer;
var z, kx, ky, max_dev, step_small: integer;
var temp: integer;

begin

z   :=  0;
if( abs( x1 - x2 ) >= abs( y1 - y2 ) ) then
begin
   if( x1 > x2 ) then
   begin
      temp  := x1;
         x1  := x2;
      x2 := temp;
      temp := y1;
      y1 :=   y2;
      y2 := temp;
   end;
   kx  := abs(y2-y1);
   ky  := x2-x1;
   if ( y1 > y2 ) then step_small := -1 else step_small := 1;
max_dev  := ky shl 1;
while( x1 <= x2 ) do
begin
   x1 := x1 + 1;
   putpixel( x1, y1, 4 );
   z  :=z+ kx;
   if ( z > max_dev ) then
   begin
      y1  := y1 + step_small;
      z  :=z- ky;
   end
end
end
else
begin
   if( y1 > y2 ) then
   begin
      temp := x1;
      x1 := x2;
      x2 := temp;
      temp := y1;
      y1 := y2;
      y2 := temp;
   end;
kx  := y2 - y1;
ky  := abs( x2 - x1 );
if ( x1>x2) then step_small :=-1 else step_small :=1;
max_dev  := kx shl 1;
while ( y1 <= y2 ) do
begin
   y1 := y1 + 1;
   putpixel(x1, y1, 4);
   z  :=z + ky;
   if( z > max_dev ) then
   begin
      x1  :=x1+ step_small;
      z  :=z- kx;
   end
end
end
end;


Сделано в виде готовой функции. Тестируй с таким кодом:
Код
uses graph ;
var driver: integer;
var mode: integer;
var x1, y1, x2, y2: integer;

begin
driver:=9;
mode:=2;
  InitGraph(driver,mode,'c:\tp7\bgi\');
drawline(320,240,320,0);
readln(mode); {просто для задержки}
closegraph;
end.
Работает, спасибо!
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)