русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Поворот


Дата добавления: 2014-02-04; просмотров: 750; Нарушение авторских прав


ПРЕОБРАЗОВАНИЕ В НОВЫЕ КООРДИНАТЫ

ДВУМЕРНЫЙ АЛГОРИТМ

РАБОТА С ПЛОСКОСТЬЮ

 

 

Рассмотрим систему уравнений:

 

x`, y` - новые координаты

 

Эти уравнения можно интерпретировать двояким образом:

1. Все точки на плоскости XY перемещаются вправо на расстояние a - см. рис.2.1(а);

2. Координатные оси x и y перемещаются влево на расстояние a - см. рис.2.1(б).

 

O O` O

(a) (б)

Рис. 2.1. (а) - передвижение точки ; (б) - передвижение осей координат

 

Этот простой пример иллюстрирует принцип, применимый и в более сложных ситуациях. Мы и далее будем рассматривать системы уравнений, обычно записываемых в виде произведений матриц, интерпретируя их как преобразования всех точек в фиксированной системе координат. Однако та же самая система уравнений может интерпретироваться и как изменение системы координат.

Пусть необходимо повернуть точку P(x, y) вокруг начала координат O на угол . Изображение новой точки на рис. 2.2. обозначим через P’(x’, y’). Всегда существуют четыре числа a, b, c, d, такие, что новые координаты могут быть вычислены по значениям старых координат x и y из следующей системы уравнений:

(2.1)

 

о

Для получения значений a, b, c, d рассмотрим вначале точку (x, y) = (1, 0). Полагая x =1 и y =0 в уравнении (2.1), получим

x’ = a

y’ = c

Но в этом простом случае, как это видно из рис. 2.3(а), значения x’ и y’ равны соответственно Cos и Sin . Тогда будем иметь

Аналогичным образом из рис. 2.3(б) следует

Тогда вместо системы уравнений (2.1) можем записать

(2.2)

 

Система уравнений (2.2) описывает поворот вокруг точки O - начала системы координат. Но часто это не то, что нам нужно. Если требуется выполнить поворот относительно заданной точки , то в этих уравнениях можно заменить: x - на , y - на , x’ - на и y’ - на (сдвигаем систему координат) .



Система уравнений, которая описывает поворот точки вокруг точки :

 

 

(2.3)

Система уравнений (2.3) неудобна для реализации на PC. Применяем матричную запись .

 

МАТРИЧНАЯ ЗАПИСЬ

Система уравнений (2.2) может быть записана в виде одного матричного уравнения

(2.4)

или с использованием вектора-столбца

(2.5)

В книгах по машинной графике запись с вектором-строкой (2.4) встречается чаще, чем с вектором-столбцом (2.5). Здесь также будет применяться запись типа (2.4). В такой записи i-я строка квадратной матрицы всегда является отображением i-го единичного вектора (здесь i=1,2). Вполне возможно записать в матричной форме систему уравнений (2.3)

(2.6)

Однако первая часть этого уравнения не является чисто матричным произведением. В более сложных ситуациях, когда поворот совмещается с другими преобразованиями, было бы более удобно иметь единое матричное произведение для каждого элементарного преобразования. На первый взгляд это кажется невозможным, если преобразование включает операцию переноса. Но, как мы увидим ниже, с помощью матрицы преобразования размером это вполне реально. Начнем с простого переноса. Пусть точка P(x, y) переносится в точку P’(x’, y’), где

x’ = x + a

y’ = y + b (2.7)

Эти уравнения можно переписать в виде

Но с учетом будущих потребностей это уравнение лучше переписать в следующей форме

(2.8)

 

(мы работаем в плоскости, поэтому координата Z всегда неизменна)

 

Легко проверить, что уравнения (2.7) и (2.8) эквивалентны. Такую запись принято называть записью в системе “однородных координат”. Запись каждого преобразования в форме произведения матриц позволяет совмещать несколько преобразований в одном. Чтобы показать такое совмещение преобразований, объединим поворот с двумя переносами. Поворот на угол вокруг начала координат O был описан уравнением (2.4).

Заменим это уравнение следующим:

(2.9)

Теперь выведем новую версию уравнений (2.6) для описания поворота на угол вокруг точки ; это уравнение может быть выражено формулой

(2.10)

где через R обозначена матрица размером 3 х 3. Для нахождения этой матрицы R будем считать, что преобразование состоит из трех шагов с промежуточными точками (u1, v1) и (u2, v2).

1. Преобразование для переноса точки в начало координат O

[u1 v1 1] = [x y 1]T’

где

2. Поворот на угол относительно точки начала координат O

[u2 v2 1] = [u1 v1 1]R

где

(2.11)

3. Перенос из начала координат в точку

[x’ y’ 1] = [u2 v2 1]T

где

Возможность комбинации этих шагов основана на свойстве ассоциативности матричного умножения, то есть

(AB)C = A(BC)

для любых трех матриц A, B и C, имеющих размерности, допускается такое умножение. Для любой части этого уравнения мы можем просто записать ABC.

Теперь найдем

[x’ y’ 1] = [u2 v2 1]T

= {[u1 v1 1] R}T

= [u1 v1 1] RT

= {[x y 1]T’} RT

= [x y 1]T’ RT

= [x y 1]R

где

R = T’ RT

Это и будет искомая матрица, которая после выполнения двух матричных умножений дает

где введены обозначения

c1 = x-xCos+ySin

c2 = y-xSin-yCos

 

Лекция №2 от 19.09.98



<== предыдущая лекция | следующая лекция ==>
Поворот | Перспективные изображения


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.146 сек.