Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Отметим, что маштабирование производится относительно начала координат.Содержание книги
Поиск на нашем сайте
Масштабирование относительно других точек рассмотрим ниже. Если Sx!= Sy неоднородное масштабирование. Если Sx = Sy однородное масштабирование. Уравнение масштабирования |Sx 0 0 | [x'y'1]=[x,y,1]|0 Sy 0 | |0 0 1 |или P' = P . S(Sx,Sy) Последовательные масштабирования приводят к матрице |Sx1Sx2 0 0 | | 0 Sy1Sy2 0 | | 0 0 1 |Масштабирование
Свойства матрицы масштабирования. Умножение слева элементарной матрицы масштабирования на прямоугольную матрицу A приводит к умножению соответствующей строки матрицы A на число λ. Умножение справа элементарной матрицы масштабирования на прямоугольную матрицу A приводит к умножению соответствующего столбца матрицы A на число λ.
Матрица поворота. Поворот Объект может быть повернут, ели координаты каждой его точки будут подвергнуты преобразованию x' = х . cosθ-y . sinθ В матричной форме
или Р ' = Р . R Положительным считаются углы, измеряемые против движения часовой стрелки от X к Y. В случае отрицательных углов можно воспользоваться тождествами cos(-θ)= cos(θ) Поворот производится относительно начала координат Однородные координаты Преобразования переноса, масштабирования и поворота в матричной форме записываются как P' = P + T К сожалению, перенос в отличие от других реализуется с помощью сложения. Хотелось бы преобразования представить в такой форме, чтобы все эти элементарные преобразования можно было бы представить в одной форме - в виде произведений матриц. Тогда удастся совместить все три вида преобразований в виде умножения на одну результирующую матрицу геометрических преобразований. Это можно сделать, представив точки в однородных координатах. Однородные координаты были введены в геометрии.
Уравнение поворота | cosθ sinθ 0 | [x'y'1]=[x,y,1]|-sinθ cosθ 0 | | 0 0 1 |или P' = P . R(θ)
Поворот плоскости и его матричное представление Ниже речь пойдет о поворотах плоскости. С плоскостью все получается относительно несложно. Если мы делаем поворот относительно начала координат, то для задания вращения используется один угол (φ). Прим. Принято считать направление вращения против часовой стрелки положительным. При этом удобно считать, что угол φ находится в интервале [–π; π]. Чтобы получить преобразование координат при повороте, возьмем произвольный вектор r, задающий некоторую точку. Его координаты: При повороте на угол φ: Т.о. при повороте на угол φ координаты x и y подвергаются преобразованию, написанному выше. Прим. Здесь фактически была использована полярная система координат. Матричное представление поворота плоскости Написанное выше преобразование координат удобно представить в виде матрицы: Прим. Умножение матриц производится по принципу строка на столбец. Поэтому количество столбцов (элементов в строке) в матрице слева должно совпадать с количеством строк (элементов в столбце) в матрице справа. Какие преимущества дает матричное представление? Заметим, что если умножить две матрицы, задающие повороты на углы α и β, то получится матрица поворота на угол α + β. Это легко проверить, перемножив соответствующие матрицы и использовав формулы для косинуса и синуса суммы. Программная реализация Создадим программу, демонстрирующую приведенную выше теорию. Будем хранить текущий поворот системы, как матрицу и каждый раз ''доворачивать'' систему на нужный угол, используя умножение матриц. Для начала нам понадобится инструментарий (framework) для работы с матрицами: Matrix.cpp #include <math.h> void SetRotationMatrix(double alpha, Matrix &matrix)
void MultiplyMatrices(Matrix &dest, Matrix &left, Matrix &right) void ApplyMatrixtoPoint(Matrix rot, _Point &point) Matrix.h #include "geometry.h"
typedef double Matrix[4];
void SetRotationMatrix(double alpha, Matrix &matrix);
Прим. Следует обратить ваше внимание на функцию MultiplyMatrices. Во многих случаях в роли dest и left выступает одна и та же матрица. Поэтому, если сразу записывать в dest, то получится некорректно.
Появляется модуль geometry.h и тип ’’точка’’ (_Point):
#ifndef _POINT
Достаточно существенно меняется модуль draw.cpp. Ниже он приведен целиком. Draw.cpp #include <windows.h>
int Width, Height;
const int MARGIN = 10;
void InitRotation() _Point T(_Point point) Draw.h void Draw(HDC hdc); И наконец в модуле main.cpp добавляется обработчик WM_KEYPRESSED: case WM_KEYDOWN: if (KeyPressed == VK_LEFT) ИЛИ Матрицей поворота (или матрицей направляющих косинусов) называется ортогональная матрица, которая используется для выполнения собственного ортогонального преобразования в евклидовом пространстве. При умножении матрицы поворота на вектор длина вектора сохраняется, при этом определитель матрицы поворота положителен (и равен 1). В отличие от матрицы перехода матрица поворота при умножении на вектор-столбец преобразует координаты вектора в соответствии с поворотом вектора (а не поворотом координатных осей). При этом координаты повернутого вектора получаются в той же (неподвижной) системе координат.
|
||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-21; просмотров: 514; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.40.151 (0.009 с.) |