На единицу, в процессе
На единицу, в процессе работы, изменяется одна из координат - либо X, либо Y(в зависимости от углового коэффициента), изменение другой координаты (либо на нуль, либо на единицу) зависит от расстояния между действительным положением отрезка и ближайшими координатами сетки. Это расстояние определим как ошибку. Рассмотрим первый октант (отрезки с угловыми коэффициентами, лежащими в диапазоне от 0 до 1).
Из рисунка можно заметить, что если угловой коэффициент отрезка из точки (0,0) больше, чем 1/2, то его пересечение с прямой x=1 будет расположено ближе к прямой y=1, чем к прямой y=0. Следовательно, точка растра (1,1) лучше аппроксимирует ход отрезка, чем (1,0).
{Логика для первого октанта, т.е. для случая 0?dy?dx}
var x,y,dx,dy:integer;
x1,y1,x2,y2:integer;
ep:real;
begin
...
x:=x1;y:=y1;dx:=x2-x1;dy:=y2-y1;
ep:=dy/dx-0.5;
for i:=1 to dx do begin
pset(x,y);
while ep>=0 do begin y:=y+1;ep:=ep-1;end;
x:=x+1;ep:=ep+dy/dx;
end;
...
end.
Рассмотрим пример. Отрезок
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа