Держи, тут, оказывается, даже с каментами:
Function ABLine(startX,startY,endX,endY)
Local K#,B
FuncX = EndX - StartX ; Вычисляем абсолютное направление отрезка, как бы
FuncY = EndY - StartY ; Передвигая центр координат под стартовую точку
If FuncX <> 0 K = FuncY/Float(FuncX) ; Таким образом, мы избавились от B и можем вычислить K - отношение Y к X
; Теперь, зная К, можно вычислить B, для этого изменяем алгебр. функцию Y=K*X+B, выражая из неё B:
B = StartY-K*StartX
; Ну что ж, теперь у нас есть K и B. Можно приступить к построению линии
If StartX < EndX
MinX = StartX
MaxX = EndX
Else
MinX = EndX
MaxX = StartX
End If
; Игрек тож
If StartY < EndY
MinY = StartY
MaxY = EndY
Else
MinY = EndY
MaxY = StartY
End If
If MinX = MaxX ; Если стартовый икс и конечный Икс равны, т.е. линия вертикальна...
For Y=MinY To MaxY; Берём каждое значение Х в пределах указанного отрезка
X = MaxX ; ТО у Икс всегда одно и то же значение
Plot (X,Y) ; Рисуем точку по рассчитанным координатам
Next
Else
For X=MinX To MaxX; Берём каждое значение Х в пределах указанного отрезка
Y = K*X+B ; Вычисляем Y
If Y>= MinY And Y<= MaxY Plot (X,Y) ; Рисуем точку по рассчитанным координатам
Next
; Бугага! Одного Икса оказалось недостаточно! Нада теперяче сделать чтоб и по Y тоже рисовалось...
For Y=MinY To MaxY; Берём каждое значение Х в пределах указанного отрезка
X = (Y-B)/K ; Вычисляем Y
If X>= MinX And X<= MaxX Plot (X,Y) ; Рисуем точку по рассчитанным координатам
Next
End If
; Должно работать :)
End Function