Трехмерное отсечение отрезков


 

 

Рис. 4.5

 

Существуют 2 наиболее распространенные формы трехмерных отсекателей:

¾ Прямоугольный параллелепипед (см. рис а);

¾ усеченная пирамида. (см. рис б);

У каждой из них 6 граней. Для определения видимости отрезков обобщим алгоритм, используемый для двумерного случая. В трехмерном случае используется 6-битовый код: .

— если конец отрезка левее объема;

— если конец отрезка правее объема;

— если конец отрезка ниже объема;

— если конец отрезка выше объема;

— если конец отрезка ближе объема;

— если конец отрезка дальше объема.

В противном случае в соответствующие биты заносятся нули.

Далее производится анализ кодов.

· если коды обоих концов отрезка равны 0, то оба конца видимы и отрезок тоже будет полностью видим;

· если коды содержат единичный бит в одной и той же позиции, то отрезок полностью невидим.

В остальных случаях отрезок может быть частично видим или полностью невидим. Необходимо определить пересечения отрезка с гранями отсекающего объема.

Поиск точки пересечения с гранями параллелепипеда является обобщением соответствующего двумерного алгоритма.

Сложнее ситуация, когда отсекатель — усеченная пирамида.

Вид усеченной пирамиды сверху:

 

 

Рис. 4.6

 

Теперь легко найти уравнение прямой на плоскости XZ, несущей проекцию правой грани отсекателя:

 

,

 

где .

 

Зная это уравнение, можно определить местоположение точки: справа (вне), на, или слева (внутри) от прямой. Подстановка координат x и z точки Р в функцию правой грани, дает результат:

 

>0, если Р справа от плоскости
=0, если Р на плоскости
<0, если Р слева от плоскости

 

Аналогично находятся функции для других 5 граней.

 

>0, если Р справа от плоскости
=0, если Р на плоскости
<0, если Р слева от плоскости

 

 

>0, если Р выше плоскости
=0, если Р на плоскости
<0, если Р ниже плоскости

 

 

>0, если Р выше плоскости
=0, если Р на плоскости
<0, если Р ниже плоскости

 

 

 

>0, если Р ближе к плоскости
=0, если Р на плоскости
<0, если Р дальше от плоскости
>0, если Р ближе к плоскости
=0, если Р на плоскости
<0, если Р дальше от плоскости

При , формы отсекателя стремятся к прямоугольному параллелепипеду, функции стремятся к функциям прямого параллелепипеда.

Неточности могут возникнуть, если концы отрезка лежат за центром проекции, . Для этого необходимо обратить значения первых четырех битов кода.



Дата добавления: 2016-07-18; просмотров: 1688;


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

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.