Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Математическая основа обратной трассировки лучейСодержание книги Поиск на нашем сайте Координаты всех объектов сцены определены в некой глобальной системе координат (в том числе и камеры). После формирования первичного луча создадим подсистему, у которой центр совпадает с точкой выхода луча и ось OZ направлена по лучу. Вычислим матрицу перехода из первой системы координат во вторую. Это позволит просто искать пересечения с треугольником, со сферой, векторы преломления и отражения. При необходимости переводим координаты нужных объектов в новую систему координат и работаем уже в ней. Если необходимо построить вторичный луч, создаем еще одну систему координат, связанную с вторичным лучом, и считаем матрицу для перехода из 2 системы в 3. Чтобы получить матрицу перехода из 1 в 3 необходимо умножить матрицу перехода из 2 в 3 умножить на матрицу перехода из 1 в 2. Таким образом, мы работаем все время в какой-то подсистеме. Нам не надо переводить никакие координаты обратно в глобальную систему. Поэтому не надо и составлять обратную матрицу. Составление матрицы Составление матрицы преобразования из текущей системы координат в систему координат, центр которой находится в точке (x, y, z) и ось OZ которой направлена по (dx, dy, dz). Для такого преобразования необходимо: совершить сдвиг в точку (x, y, z) совершить поворот вокруг OZ совершить поворот вокруг OX
1. Матрица сдвига:
2. Необходимо совершить поворот вокруг оси OZ по часовой стрелке на угол α.
Матрица поворота, таким образом, будет равна:
3. Необходимо совершить поворот вокруг оси OX по часовой стрелке на угол β.
Матрица поворота, таким образом, будет равна:
Умножив M3 на M2, а результат на M1 получим искомую матрицу перехода:
Программная реализация Во многих функциях и процедурах в программе в качестве входных и выходных параметров выступают матрицы. Поэтому в программе введен специальный тип:
TMatrix=Array [0..11] of real
Это массив из 12 элементов типа real. Он представляет собой последовательно записанные три верхние строчки матрицы. Я не включил последнюю строчку, так как она одинаковая у всех матриц преобразования и равна (0, 0, 0,1). Для операций над матрицами в программе предусмотрены следующие процедуры: 1. Procedure MatrixAB (var Res: TMatrix; const M1,M2: TMatrix) Процедура умножает матрицу M1 на матрицу M2 и помещает результат в Res. 2. Procedure ShiftMatrix (var M: TMatrix; Z: real) Создает матрицу перехода из текущей системы координат в систему координат, сдвинутую по оси OZ на z. Процедура перемещает систему координат, задаваемую матрицей M, по оси OZ на z. 3. Procedure SetMatrix (var M: TMatrix; dx,dy,dz,x,y,z: real) overload Создает матрицу перехода из текущей системы координат в систему координат, находящуюся в точке (x,y,z), ось OZ которой направлена по вектору (dx,dy,dz). 4. Procedure SetMatrix (var M: TMatrix; dx,dy,dz: real) overload Создает матрицу перехода из текущей системы координат в систему координат, ось OZ которой направлена по вектору (dx,dy,dz). Преобразование координат Для преобразования координат точки из одной системы координат в другую необходимо умножить матрицу преобразования на столбец координат точки.
Для преобразования точки из одной системы координат в другую в программе существует процедура Trans (const M: TMatrix; var F: TPoint; const V: TPoint). В V содержатся координаты точки, координаты которой надо преобразовать. В F содержатся результат. M - матрица преобразования. В процедуру Ray передается только матрица перехода из глобальной системы координат в систему, связанную с лучом (Mi). Процедура находит координаты вторичного луча в новой системе координат. Составляет матрицу перехода из текущей системы в систему, связанную с лучом (Li+1). Умножает матрицы Mi+1=Li+1Mi Вызывает рекурсивно Ray с параметром Mi+1
|
||
|
Последнее изменение этой страницы: 2020-03-14; просмотров: 172; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.02 с.) |