Создание сайтов в Донецке

Demarket Studio – команда разработчиков веб-сайтов и сервисов, ежедневно трудящихся над проектами своих клиентов, создавая удобные, современные и перспективные площадки для освоения оффлайн компаниями просторов сети Интернет. Основная наша цель – предоставить каждому заказчику наиболее выгодные и удобные условия работы: стоимость, срок, способ и время оплаты. К каждому заказу мы привыкли относиться как к собственному проекту, – вникая в суть проекта, стараясь сделать его наиболее полезным и удобным, стараемся помочь Вам определиться с задачами и способами их воплощения.

Первое условие представляет собой логическое выражение

Первое условие представляет собой логическое выражение , а второе – логическую операцию над кодами.
С целью повышения эффективности алгоритма можно также использовать параметрическую форму представления отрезков, которая облегчает проверку их расположения.
Координаты текущей точки P(x,y) отрезка Р1Р2 в параметрической форме записываются следующим образом:
x = x1+ (x2 – x1) * t,
y = y1+ (y2 – y1) * t,
где t [0,1], т.е. параметр t принимает значения в интервале от 0 до 1.
Тогда пересечение прямой, продолжающей отрезок Р1Р2, с левой гранью отсекающего окна дает значение
t = ,
где t = tл при x = xл для левой грани,
t = tп при x = xп для правой грани.
Аналогично можно получить значения параметра t для верхней и нижней граней
t = ,
где t = tв при y = yв для верхней грани,
t = tн при y = yн для нижней грани.
Если выполняется условие 0 t 1, то точка пересечения принадлежит отрезку Р1Р2, в противном случае – нет.

Соответствующий бит равен единице

Соответствующий бит равен единице, если по отношению к этой грани точка находится во внешней полуплоскости. При таком подходе плоскость разбивается на 9 областей. На рис. 3.5 показаны эти области с соответствующими кодами признаков.

1010 0010 0110

1000 0000 0100

1001 0001 0101

Рис. 3.5

В соответствии с этим точка, расположенная внутри отсекающего окна, имеет код признака M(P) = 0 и является видимой. Условие полной видимости отрезка Р1Р2 с использованием кода признака примет вид
(M(P1) = 0) & (M(P2) = 0).
Аналогично строится условие полной невидимости этого отрезка.
(M(P1) & M(P2)) 0.

Реализация алгоритма

Реализация алгоритма требует детализации двух операций – определение внутренней и внешней полуплоскостей и нахождение точек пересечения с границами отсекающего окна. Задачу с полуплоскостями можно решить на основе учета наименования ребра, для которого решается эта задача. Так, для левого ребра внутренняя полуплоскость располагается правее и отбрасывать следует ту часть отрезка, для концевой точки P которой выполняется условие P < л. Аналогично решается задача и для других ребер окна. Точки пересечения определяются так, как это было показано в подразделе 1.2.
Для повышения эффективности алгоритма можно использовать специальный четырехбитовый код признака M(P) точки P, который имеет следующий структуру:

Л П В Н