Алгоритм Робертса

Цей алгоритм, запропонований в 1963 р., є першою розробкою такого роду й призначений для видалення невидимих ліній при штриховому зображенні об'єктів, складених з опуклих багатогранників. Він ставиться до алгоритмів, що працюють в об'єктному просторі, і дуже елегантний з математичної точки зору. У ньому дуже вдало сполучаються геометричні методи й методи лінійного програмування.

Опуклий багатогранник однозначно визначається набором площин, що утворять його грані, тому вихідними даними для алгоритму є багатогранники, задані списком своїх граней. Грані задаються у вигляді площин, заданих у канонічній формі (див. лекцію 3) в об'єктній системі координат: .

 

Рис. 8.2. Зовнішні нормалі тетраедра

Таким чином, кожна площина визначається четырехмерным вектором , а кожна крапка , задана в однорідних координатах, також являє собою четырехмерный вектор:

Приналежність крапки площини можна встановити за допомогою скалярного добутку, тобто якщо , те крапка належить площини, якщо ж ні, те знак добутку показує, по яку сторону від площини ця крапка перебуває. В алгоритмі Робертса площини будуються таким чином, що внутрішні крапки багатогранника лежать у позитивній напівплощині. Це означає, що вектор є зовнішньою нормаллю до багатогранника (мал. 8.2). З векторів площин будується прямокутна матриця порядку , що називається узагальненою матрицею опису багатогранника:

Множачи стовпці матриці на вектор , одержимо n-мірний вектор, і якщо всі його компоненти ненегативні, то крапка належить багатограннику. Ця умова будемо записувати у вигляді (мається на увазі множення вектор-рядка на матрицю).

У своєму алгоритмі Робертс розглядає тільки відрізки, що є перетинанням граней багатогранника.

З узагальненої матриці можна одержати інформацію про те, які грані багатогранника перетинаються у вершинах. Дійсно, якщо вершина належить граням , то вона задовольняє рівнянням

Цю систему можна записати в матричному виді:

де - матриця, складена з вектор-стовпців . Виходить, координати вершини визначаються співвідношенням

т.е. вони становлять останній рядок зворотної матриці. А це означає, що якщо для яких-небудь трьох площин зворотна матриця існує, то площини мають загальну вершину.

Алгоритм насамперед видаляє з кожного багатогранника ті ребра або грані, які екрануються самим тілом. Робертс використовував для цього простий тест: якщо одна або обидві суміжні грані звернені своєю зовнішньою поверхнею до спостерігача, то ребро є видимим. Тест цей виконується обчисленням скалярного добутку координат спостерігача на вектор зовнішньої нормалі грані: якщо результат негативний, то грань видима.

Потім кожне з видимих ребер кожного багатогранника рівняється з кожним з багатогранників, що залишилися, для визначення того, яка його частина або частини, якщо такі є, екрануються цими тілами. Для цього в кожну крапку ребра проводиться відрізок лучачи, що виходить із крапки розташування спостерігача. Якщо відрізок не перетинає жодного з багатогранників, то крапка видима. Для рішення цього завдання використовуються параметричні рівняння прямої, що містить ребро, і лучачи.

Якщо задані кінці відрізка й , а спостерігач розташований у крапці , то відрізок задається рівнянням

а пряма, що йде в крапку, що відповідає параметру , - рівнянням

Для визначення тої частини відрізка, що закривається яким-небудь тілом, досить знайти значення й , при яких добуток вектора на узагальнену матрицю позитивно. Для кожної площини записується нерівність

Ці умови повинні виконуватися для всіх площин.

Думаючи , одержуємо систему рівнянь, рішення якої дають нам крапки "зміни видимості" відрізка. Результат можна одержати шляхом спільного рішення всіляких пар рівнянь із цієї системи. Число всіляких рішень при площинах дорівнює .

Тому що обсяг обчислень росте зі збільшенням числа багатокутників, те бажано в міру можливості скорочувати їхнє число, тобто якщо ми апроксимуємо деяку поверхню багатогранником, то як грані можна використовувати не трикутники, а більше складні багатокутники. При цьому, зрозуміло, встає проблема, як побудувати такий багатокутник, щоб він мало відхилявся від плоскої фігури.








Дата добавления: 2015-04-03; просмотров: 1322;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.