
Demarket Studio – команда разработчиков веб-сайтов и сервисов, ежедневно трудящихся над проектами своих клиентов, создавая удобные, современные и перспективные площадки для освоения оффлайн компаниями просторов сети Интернет. Основная наша цель – предоставить каждому заказчику наиболее выгодные и удобные условия работы: стоимость, срок, способ и время оплаты. К каждому заказу мы привыкли относиться как к собственному проекту, – вникая в суть проекта, стараясь сделать его наиболее полезным и удобным, стараемся помочь Вам определиться с задачами и способами их воплощения.
Та часть отрезков, которая не была выявлена как видимая или невидимая, подвергается анализу общим алгоритмом задачи отсечения. Общий алгоритм решения задачи отсечения базируется на определении точки пересечения отрезка Р1Р2, для которого решается эта задача, с ребром многоугольника. С этой целью определим положение всех вершин многоугольника относительно прямой, продолжающей отрезок Р1Р2, путем вычисления следующих определителей третьего порядка.
Si = | Ai Р1 Р2 | , I = 1, 2, … , n.
Значения n определителей Si могут быть больше, меньше нуля или равны ему. Все возможные сочетания этих значений разобьем на два случая.
Естественно, при этом упрощении часть полностью невидимых отрезков, которые могли бы быть выявленными проверкой условия невидимости для многоугольника, будет отброшено. В общем случае эта часть отрезков может быть невелика и выигрыш в объеме вычислений компенсирует эту потерю.
Возможна и ситуация (по объему вычислений), при которой имеет смысл отказаться от выявления невидимых отрезков с помощью определителей, переложив эту задачу на общий алгоритм задачи отсечения.
Однако отрезок P3P4, являясь полностью невидимым, не удовлетворяет условию расположения его во внешней полуплоскости ни для одной грани многоугольника, и, следовательно, не может быть выявлен как невидимый с помощью проверки условий, аналогичных тем, что были рассмотрены в подразделе 1.1. В отличие от этого отрезок P1P2 находится во внешней полуплоскости по отношению к грани ребра AiAi+1, и определители для концевых точек отрезка имеют значения
|P1AiAi+1| > 0 и |P2AiAi+1| > 0.
В общем случае выявление невидимости отрезка приводит к вычислению не более 2n определителей третьего порядка. При удачном выборе обхода ребер многоугольника может оказаться достаточным вычисление только двух определителей. Во многих случаях можно уменьшить объем вычисления использованием минимаксной оболочки в виде ортогонального окна, имеющего координаты
xл = xmin; xп = xmax; yв = ymax; yн = ymin.
Здесь min и max относятся к минимальным и максимальным координатам вершин многоугольника (рис. 3.7).