READ ksi! READ efca! READ dzt! GOSUB prjct NEXT i

Затем в графическом режиме осуществляется построение изображений прямых, соединяющих эти точки.

SCREEN 12

LOCATE 16, 37: COLOR 7

PRINT "АНАГЛИФ"

у2 = ус (12) : r2 = xr(12) : 12 = xl(12)

FOR iv = 1 ТО 12

GOSUB getpoint

GOSUB drawl NEXT iv SLEEP END

He забудьте записать в этом месте вышеприведенную программу пересчета координат!

Следующая подпрограмма читает новые значения координат конечной точки, но перед этим передает значения старой конечной точки в начальную.

getpoint:

у1 = у2: г1 = r2: 11 = 12

у2 = yc(iv) : r2 = xr(iv) : 12 = xl(iv) RETURN

Нижеследующая подпрограмма осуществляет построение отрезков, продвигаясь точка за точкой вдоль растра экрана. Она основана на известном алгоритме Брезенхама в том или ином виде используемого для наиболее быстрого построения прямых. Его быстродействие обусловлено тем, что в нем не используются числа с плавающей запятой. В алгоритме Брезенхама производится расчет погрешности аппроксимации (приблизительной замены) фактического значения текущей точки целочисленным значением, а по превышению этой погрешностью значения 0,5 соответствующая координата изменяется на 1 с целью уменьшения модуля погрешности. Для работы с целыми числами в вычислениях погрешности введен масштабный множитель равный максимальному изменению координаты.

drawl:

уу = у2 - yl: yn = ABS(yy) : yd = SGN(yy)

'модуль и знак изменения ординаты

FOR j = 1 ТО 2 'цикл построения двух отрезков IP j=l THEN ' выбор абсцисс и цвета отрезков

xl = 11: х2 = 12: my = 1: уш = 4 ELSE

xl = rl: x2 = r2: my = 4: уш = 1 END IF xx = x2 - xl: xn = ABS(xx): xd = SGN(xx)

'модуль и знак изм. абсциссы х = xl: у == yl 'начальная точка шах = xn: IF yn > max THEN шах = yn

'выбор абсциссы