Скачать презентацию Алгоритмы разложения в растр Заполнение многоугольников Алгоритмы Скачать презентацию Алгоритмы разложения в растр Заполнение многоугольников Алгоритмы

заполнение многоугольников.ppt

  • Количество слайдов: 11

Алгоритмы разложения в растр Заполнение многоугольников Алгоритмы разложения в растр Заполнение многоугольников

Алгоритмы разложения в растр Заполнение многоугольников Алгоритмы разложения в растр Заполнение многоугольников

Алгоритмы разложения в растр Заполнение многоугольников • • • Поместить затравочный пиксель в стек Алгоритмы разложения в растр Заполнение многоугольников • • • Поместить затравочный пиксель в стек Пока стек не пуст Извлечь пиксель из стека Присвоить пикселю требуемое значение Для каждого из 4 х (8 ми) соседних к нему пикселей проверить является ли пиксель граничным или уже закрашенным в требуемый цвет, если да то проигнорировать пиксель иначе занести его в стек.

Алгоритмы разложения в растр Заполнение многоугольников Алгоритмы разложения в растр Заполнение многоугольников

Алгоритмы разложения в растр Заполнение многоугольников • • • Занести затравочный пиксель в стек Алгоритмы разложения в растр Заполнение многоугольников • • • Занести затравочный пиксель в стек Пока стек не пуст повторять Извлечь пиксель из стека Заполнить интервал вправо и влево от затравки до достижения граничных пикселей, запомнить крайние пиксели интервала как Хправ и Хлев. В диапазоне от Хлев до Хправ проверить строки расположенные непосредственно над и под текущей строкой. Если в строке найден незаполненный интервал, занести один (только один, обычно крайний левый или крайний правый) пиксель интервала в стек и продолжить поиск других интервалов в этой строке.

Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена

Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена Код 1 AND Код 2 <> Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена Код 1 AND Код 2 <> 0 and

Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена

Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена

Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена Procedure Clipper(x 1, x 2, y Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена Procedure Clipper(x 1, x 2, y 1, y 2, left, right, up, bottom); Var dx, dy, l: longint; Out. Code 1, Out. Code 1: byte; Function Out. Codes(x, y: integer); Var Code: byte; Begin Code: = 0; If y > Up then Code: = Code +1; If y < Bottom then Code: = Code +2; If y > Right then Code: = Code +4; If y < Left then Code: = Code +8; Out. Codes: = Code; End; end.

Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена Begin Repeat Out. Code 1: =Out. Алгоритмы разложения в растр Отсечение отрезка. Алгоритм Сазерленда-Кохена Begin Repeat Out. Code 1: =Out. Codes(x 1, y 1); Out. Code 2: =Out. Codes(x 2, y 2); If Out. Code 1 and Out. Code 2 <> 0 then exit; If Out. Code 1 or Out. Code 2 = 0 then begin draw; exit; end; If Out. Code 1 = 0 then begin Out. Code 1: = Out. Code 2; Tmp: = x 1; x 1: = x 2; x 2: = tmp; Tmp: = y 1; y 1: = y 2; y 2: = tmp; If Out. Code 1 and 1 <> 0 then begin Dx: = x 2 - x 1; Dy: = up – y 1; l: = Dx * Dy; x 1: = x 1 + l div (y 2 -y 1); y 1: = up; If Out. Code 1 and 2 <> 0 then begin end else Dx: = x 2 - x 1; Dy: = Bottom – y 1; l: = Dx * Dy; x 1: = x 1 + l div (y 2 -y 1); y 1: = Bottom; If Out. Code 1 and 4 <> 0 then begin end Dx: = right - x 1; Dy: = y 2 – y 1; l: = Dx * Dy; y 1: = y 1 + l div (x 2 -x 1); x 1: = right; end else If Out. Code 1 and 8 <> 0 then begin Dx: = left - x 1; Dy: = y 2 – y 1; l: = Dx * Dy; y 1: = y 1 + l div (x 2 -x 1); x 1: = left; until false; End. else end; End;