17.2. ЗАДАЧИ УДАЛЕНИЯ НЕВИДИМЫХ ЛИНИЙ И НЕВИДИМЫХ ПОВЕРХНОСТЕЙ
Изображение куба, полученное в примере 16.2, иллюстрирует простейший случай задачи удаления невидимых линий. Хотя общее число прямых в этом случае равно 12, для создания впечатления трехмерного объекта необходимо воспроизвести лишь девять из них. Эту задачу можно также решать посредством удаления невидимых поверхностей, если рассматривать грани куба. В векторной графике обычно решают задачу удаления невидимых линий, а в растровой графике — задачу удаления невидимых поверхностей. Важность этой задачи определяется не присущей ей сложностью, а тем, что ее решение необходимо получить быстро, на пример, в процессе поворота объекта. Первый шаг решения этой задачи связан с обобщением результатов, приведенных в подразд. 14.4.4, на трехмерный случай с помощью результатов из разд. 16.2.
17.2.1. ТЕНИ ПОВЕРХНОСТЕЙ
Пусть — грани (конечные участки поверхности) всех объектов, присутствующих на изображении.
Определение 17.1. Мы будем считать, что грань затеняет или загораживает грань по направлению при выполнении следующих условий:
а) грань не пересекает грань
б) ортогональные проекции этих граней на некоторую плоскость, перпендикулярную направлению имеют некоторое непустое пересечение Т;
в) по меньшей мере, одна из точек грани проекция которой входит в находится дальше от начала координат по направлению чем соответствующая точка грани
Обычно предполагается, что направление совпадает с осью а грани представляют собой плоские многоугольники. Если не вводить последнее допущение, то проверка выполнения условий определения 17.1 оказывается очень трудной, если вообще практически невозможной. Сравнение этого определения с утверждением 14.2 показывает, насколько усложняется эта задача в трехмерном случае: вместо проверки выполнения условий (14.21а) или (14.21 б) приходится решать задачу разрезания многоугольников на плоскости Проверка отсутствия пересечения тоже достаточно сложна Отрезок прямой на плоскости однозначно определяется заданием двух его концевых точек, и мы можем непосредственно воспользоваться анализом, проведенным в подразд. 14.4.2. В трехмерном пространстве грань не обязательно является треугольной, поэтому недостаточно проверить знак определителя (16.9) для трех точек — его необходимо проверять для всех вершин обеих граней. Положение точки относительно начала координат можно определить, подставив координаты одной из точек из плоскостей в уравнение, задающее другую, на которой введена правая система координат.
Изменим определение 17.1 таким образом, чтобы оно учитывало случай центральной проекции.
Определение 17.2. Мы будем считать, что грань затеняет или загораживает грань 5, для наблюдателя, расположенного в точке С, при выполнении следующих условий:
а) грань не пересекает грань
б) центральные проекции этих граней на некоторую плоскость, не проходящую через точку С, имеют некоторое непустое пересечение
в) по меньшей мере, одна из точек грани проекция которой входит в лежит на прямой, проходящей через точку С, дальше от этой точки, чем соответствующая точка грани
Различия, связанные с типом проекции, можно устранить, если воспользоваться выражениями для центральных проекций, приведенными в разд. 16.5. В этом случае сцена, воспроизводимая с помощью центральных проекций, строится в два этапа. Сначала все объекты подвергаются трехмерному преобразованию, задаваемому матрицей Р [см. (16.20)]. В результате точка с координатами х, у, z отображается в точку с координатами
На рис. 17.4, а приведена геометрическая интерпретация этих преобразований на плоскости Из элементарной геометрии известно, что
так как Кроме того,
так как и Таким образом, точка А” является образом точки при данном преобразовании. На рис. показано преобразование группы точек. Из уравнения (17.1), как и из рис. 17.4, следует, что образы точек, расположенных на одной прямой, проведенной из центра проектирования С (таких, как точки и В), выстраиваются вдоль вертикали картинной плоскости (такие, как точки и ).
Рис. 17.4. Иллюстрация к задаче разделения видимых и невидимых элементов сцены при центральном проектировании: a — геометрическая интерпретация преобразования, задаваемого матрицей (16.20), точка А — образ точки А при этом преобразовании, б — геометрическая интерпретация того же, что и на рис 17.4, а, преобразования для группы точек
Образы точек, расположенных на разных прямых, проведенных из центра проектирования С (таких, как точки А и D), не выстраиваются вертикально (такие, как точки А” и D”).
После этого можно переходить ко второму этапу. В процессе его выполнения рассматриваются тени поверхностей, но делается это не для исходных объектов, а для их образов при преобразовании, задаваемом матрицей (16.20), и при ортогональном проектировании Соответствующие результаты суммируются следующим образом.
Утверждение 17.1. Решение задачи разделения видимых и невидимых элементов сцены при центральном проектировании эквивалентно решению этой задачи для образов исходных объектов при преобразовании, задаваемом матрицей (16.20), и при ортогональном проектировании.