Этой стадии тестирования достигнет только такое ребро, которое целиком лежит на дальней стороне плоскости грани /*". Грань может закрывать ребро, а может не закрывать его. Если ребро на предыдущих этапах было разделено, то полезно произвести повторное тестирование х- и г/-экстентов оставшегося куска в надежде, что теперь перекрывание отсутствует. Если предположить, что экстенты перекрыва13.7. HSR-методы для криволинейных поверхностей ются, то остается только вычислить точки пересечения ребра (мы будем обозначать его по-прежнему Е) с каждым из ребер грани Л Используем для ребра Е параметрическую форму (как в предыдущем параграфе) и вычислим время каждого пересечения ребра Е с каким-нибудь из ребер грани. В результате получаем список значений ґ. Для случая, приведенного в листинге 13.7, этот список содержит величины: г2, г3, £4, £5, £6 (предполагается, что список начинает формироваться, когда ребро находится между вершинами г>, и г>2). Значения времени г сортируются, и список анализируется на предмет выяснения, где находятся участки ребра, лежащие вне грани (см. ниже приведенные упражнения). В конце концов эти отрезки ребер, лежащие вне грани, помещаются в список выживших элементов для возвращения в подпрограмму еадеТезШ.
Практическое упражнение 13.6.4. Анализ списка значений г.
Как только что обсуждалось, при тестировании ребра Е на пересечения со сторонами грани Б создается список значений г. Пусть этот список состоит из следующих значений: 0,6, 0,4, 0,1, -0,3, -0,8, 1,4. Что еще должно быть известно, чтобы можно было сказать, какие из интервалов г соответствуют кускам ребра Е, лежащим вне грани? Разработайте общий метод для анализа такого списка и построения нужных интервалов г.
13.7. HSR-методы для криволинейных поверхностей В главе 6, раздел «Формирование полигональной сетки для криволинейной поверхности», мы имели дело со следующим подходом: криволинейные поверхности перед визуализацией обычно «полигони-зируются». Поверхность, заданная в параметрической форме Р(и, v), разделяется на плоские полигоны вдоль линий постоянства параметров и и v. Однако это может привести к образованию очень большого количества полигонов и крупным затратам памяти. Кроме того, на окончательной картинке могут наблюдаться некоторые дефекты изображения, такие как контуры, выглядящие неприятно полигональными.