Вопросы к 14 - p1xelse/CG GitHub Wiki

1) Что такое отсечение?

Отсечение - операция удаления изображения за пределами выделенной области, которая называется окном или отсекателем.

2) Как ищем точки пересечения отрезка с границами отсекателей?

Находим с помощью метода уточнения корней. Этот метод как правило занимает время. Используем деление на 2, а в машинах деление на 2 это просто сдвиг, который выполняется быстро.

3) Как распознаём невидимость отрезков?

Если произведение кодов отрезка != 0, то отрезок тривиально невидимый. Отрезок может быть не тривиально невидимый. Тогда определяем следующим образом:

Найдем Рср1, отрезок РсрР4 не будет распознан, как полностью невидимый, продолжим с ним работу, ищем опять Рср2, нижняя часть отрезка-тривиально невидимая, вершина Р4 переезжает в Рср2 и так далее. Подводя итог, в процессе разбиения отрезка, либо мы убеждаемся в том, что части отрезка становятся невидимыми, либо может сложиться ситуация, когда отрезок стянется в точку и тогда нужно будет определить видимость/невидимость этой точки.

4) Надо ли особым образом обрабатывать вертикальные и горизонтальные отрезки?

В алгоритме средней, точки не нужно особым ообразом рассматривать вертикальные и горизонтальные отрезки. В алгоритме сазреленда - коэна, это необходимо, так как там мы рассматриваем угол наклона, который в случае вертикальности или горизонтальности отрезка может получится 0 или бесконечность

5) В чем отличие этого алгоритма от других?

Изначально, алгоритм средней точки, предназначен для аппаратной реализации. Так как побитовый сдвиг вправо равнозначен делению на 2. Соответственно, его аппаратная реализация будет работать быстрее, чем алгоритм Сазерленда-Коэна, но программная медленнее.

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

6) Где находится средняя точка?
Средняя между точками (x1,y1), (x2,y2) имеет координаты ((x1+x2)/2, (y1+y2)/2)

7) Можем ли мы придумать вариант расположения отрезка, что придется делить его пополам до получения вырожденного отрезка (точки)? (??????????)
Это может произойти только если эта точка окажется под 45° от угла отсекателя.

8) Что такое тривиально невидимый отрезок?
Это такой отрезок, у которого при анализе его кодов концов, произведение этих кодов не равно 0, то есть оба конца отрезка находятся по одну сторону от отсекателя.

9) Расскажите про численные методы и затраты времени на них?
См. выше: Используем деление на 2, а в машинах деление на 2 это просто сдвиг, который выполняется быстро.