Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

Компьютерная Графика

Двумерный алгоритм преобразование в новые координаты


Поворот.

Пусть необходимо повернуть точку 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 - на (x-xo) , y - на (y-yo), x’ - на (x`-xo) и y’ - на (y`-yo) (сдвигаем систему координат) .

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

  (2.3)

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


Предыдущий раздел | Предыдущая тема | Следующая тема | Следующий раздел

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
20K
20 июля 2006 года
Tubrik
0 / / 20.07.2006
+1 / -1
Мне нравитсяМне не нравится
26 апреля 2009, 21:20:38
Приведите пожайлуста полный вывод данного уравнения поворота, а то утверждение "Всегда существуют четыре числа a, b, c, d, такие, что .." не ясно откуда берется. Если можно простым языком. Или как можно прийти к этим уравнениям через дельта угол?
Спасибо.
2.
Аноним
Мне нравитсяМне не нравится
19 июля 2005, 19:06:50
Тигр, а в чём проблема? Один раз вычисляется sin и cos для заданного угла. Дальше - элементарно. Для sin/cos можно хранить таблицу, скажем с шагом 1градус (вряд ли Bitmap точнее поворачивать придётся). Есть такая штука - таблица Брадиса. Там же - поправоичные значенения для долей. Достаточно компактно и точно. В MMX не пробовал, а на DSP работает - любо посмотреть. В реальном времени ориентирует изображение, поступающее с камеры, которая вертится и смещается как попало.
3.
Аноним
Мне нравитсяМне не нравится
20 мая 2005, 11:50:37
А кто из вас знает Как поворот Bitmap с испльзованием технологии MMX ? Я пыталась программировать над матрицей Sin-Cos. Но В результате получила больше времени.
4.
Аноним
Мне нравитсяМне не нравится
10 марта 2005, 17:44:21
Rom@rio не прав. SIN i COS можно вычислять один раз. А для радиуса нужно щитать также SQRT (корень квадратный)
5.
Аноним
Мне нравитсяМне не нравится
8 февраля 2005, 14:39:28
Да все правильно. Обычная 2Д матрица поворота.

В-твоем случае угол а - это абсолютный угол, т.е. для вычисления этого угла необходимо вычислить начальный угол и прибавить дельта угла.

А также необходимо вычислять радиус

И мы в итоге придём именно к такой формуле, которая показана выше.

Не забывай что в условии задачии мы имеем координаты точки х,у центр вращения хо и уо, а также дельта угла поворота.

Никаких радиусов и углов у нас нет.
Первый курс первый семестр аналитической геометрии. :))
6.
Аноним
+1 / -2
Мне нравитсяМне не нравится
30 января 2005, 14:33:57
слишком много синуосв и косинусов вообщем этот сайт для программистов а не математиков !!!

вот получше :)

х-=sin(a)*r;
y-=cos(a)*r

x,y - центр вращения
r - радиус (расстояние от центра вращения до точки)
a - угол

можно поиграться с знаками, с изменением радиуса (спираль)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог