Однородные координаты. Задание геометрических преобразований в однородных координатах с помощью матриц
В предыдущей главе описывались геометрические преобразования на плоскости и в пространстве, а также было показано, как можно использовать аппарат матриц для таких задач. Для преобразований на плоскости применялись двумерные векторы и матрицы размерностью Для пояснения такого подхода сначала рассмотрим случай двумерного пространства. Каждая точка плоскости с координатами Если теперь рассматривать точку плоскости как принадлежащую трехмерному пространству, то ее двумерные преобразования можно будет описывать с помощью матриц Поворот на угол Операция масштабирования может быть записана в виде Перенос на вектор Проекции точки на оси координат определяются с помощью матриц проекции: Перейдем теперь к трехмерному пространству. Каждой точке матрица масштабирования тоже очевидным образом строится из трехмерной матрицы: Проекции точек на координатные плоскости осуществляются с помощью матриц (более подробно проекции и их виды будут рассмотрены позднее): Умножение этих матриц на вектор приводит к тому, что обнуляется одна из координат, и в результате получаем проекцию точки на соответствующую плоскость. Матрица поворота относительно оси Отсюда легко понять, как строятся матрицы поворота относительно других координатных осей, а также матрица поворота относительно произвольной оси. Просто берем матрицы, построенные в третьей главе, и расширяем их путем добавления уже известных единичных вектора-строки и вектора- столбца: Путем объединения приведенных элементарных преобразований можно построить и более сложные. В третьей главе мы использовали произведение простых матриц вращения для построения матрицы поворота относительно произвольной оси. Приведем один пример. Пусть в пространстве заданы два отрезка - 1. Сдвиг, перемещающий точку 2. Сдвиг начала координат в эту же точку. 3. Если отрезки неколлинеарны: o строится вектор нормали к плоскости, в которой лежат отрезки (для этого можно использовать векторное произведение исходных векторов); o поворот относительно вектора нормали, совмещающий два отрезка по направлению (угол поворота можно определить с помощью скалярного произведения исходных векторов). 4. Масштабирование с целью выравнивания длины отрезков. 5. Возвращение начала координат в исходную точку. Каждое из этих преобразований реализуется с помощью матрицы, а полное преобразование можно выполнить, используя произведение матриц. Использование матриц очень удобно для выполнения преобразований в пространстве, хотя в некоторых случаях это приводит к избыточному числу выполняемых операций. Например, поворот одной точки в пространстве относительно координатной оси т.е. с помощью всего лишь четырех умножений и одного сложения и одного вычитания. Операции сдвига также гораздо более экономично выполнять без использования матриц. Но когда речь идет о суперпозиции многих преобразований (как, например, в случае поворота относительно произвольной оси), то целесообразно применять соответствующую матрицу поворота. Эффективность матричного подхода очень сильно возрастает, если матричные операции реализованы аппаратно. Вопрос о том, в каких случаях использовать матрицы, а в каких нет, во многом зависит от возможностей вычислительной техники, уровня сложности задачи и требований к временным характеристикам процесса визуализации. Вопросы и упражнения
|