Онда растрлы бұранданы (бұнда және осыдан кейінгі жағдайларда
алгоритмдерді жазу үшін псевдоалгол немесе оқу алголы деп аталатын түсінік
қолданылады) генерациялау процедурасы келесідей түрге ие:
Dx := 1; Dy := abs((y2-y1)/(x2-x1));
X := x1; y := y1; L := x2-x1;
for i := 0 to L-1 do begin
PutPixel(x,Round(y));
X := x+Dx; y := y+Dy; end.
Бұл алгоритм қарапайым: тесікте кезекті нүктені алып оған жақын
пикселдерді құрамыз.
Условие k<1 шарты бұранданың бір де бір нүктесін қалдырмай ратрлы
кескінін тұрғызу үшін қажетті: х бойынша Dx=1қадамдаймыз, y бойынша
аздап. Егер де k>1, онда осы алгоритмда x,y айнымалыларының орнын
ауыстыру қажет.
Жазылған алгоритмде нүктенің толықмәнді абсциссасы әрбір қадамда бір
бірлікке өзгереді, ал толықмәнді ординатаның мәні Dy өсу аралығы ординат осі
бойынша көршілес деңгейдің 0.5 аймағына сәйкес келгенде ғана өзгереді. Осы
бақылауларға сәйкес алгоритмді формасы бойынша негізгі схемасын өзгертпей
ақ өзгертуге болады:
х := x1; y := y1; n := x2-x1; m:= y2-y1; d := m/n; e := 0;
for i := 1 to n do begin
x := x+1; e := e + d;
{егер де ординат осінің ауытқушылығы берілген мәннен ½ көп болатын
болса, онда у-ті 1-ге арттырып, у-тің жаңа мәні бойынша е-нің мәнін түзету
керек}
if e > 0.5 then begin y := y+1; e := e - 1; end;
PutPixel(x,y);
end;
Осы жағдайда келесі нүктеде ауысу көршілес 8 клетканың біреуінде
болатындықтан тесіктің 8-байланысты көрінісі пайда болады.
1>1>
Достарыңызбен бөлісу: