Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Трехмерное отсечение отрезков
Рис. 4.5
Существуют 2 наиболее распространенные формы трехмерных отсекателей: ¾ Прямоугольный параллелепипед (см. рис а); ¾ усеченная пирамида. (см. рис б); У каждой из них 6 граней. Для определения видимости отрезков обобщим алгоритм, используемый для двумерного случая. В трехмерном случае используется 6-битовый код: . — если конец отрезка левее объема; — если конец отрезка правее объема; — если конец отрезка ниже объема; — если конец отрезка выше объема; — если конец отрезка ближе объема; — если конец отрезка дальше объема. В противном случае в соответствующие биты заносятся нули. Далее производится анализ кодов. · если коды обоих концов отрезка равны 0, то оба конца видимы и отрезок тоже будет полностью видим; · если коды содержат единичный бит в одной и той же позиции, то отрезок полностью невидим. В остальных случаях отрезок может быть частично видим или полностью невидим. Необходимо определить пересечения отрезка с гранями отсекающего объема. Поиск точки пересечения с гранями параллелепипеда является обобщением соответствующего двумерного алгоритма. Сложнее ситуация, когда отсекатель — усеченная пирамида. Вид усеченной пирамиды сверху:
Рис. 4.6
Теперь легко найти уравнение прямой на плоскости XZ, несущей проекцию правой грани отсекателя:
,
где .
Зная это уравнение, можно определить местоположение точки: справа (вне), на, или слева (внутри) от прямой. Подстановка координат x и z точки Р в функцию правой грани, дает результат:
Аналогично находятся функции для других 5 граней.
При , формы отсекателя стремятся к прямоугольному параллелепипеду, функции стремятся к функциям прямого параллелепипеда. Неточности могут возникнуть, если концы отрезка лежат за центром проекции, . Для этого необходимо обратить значения первых четырех битов кода.
|