Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/35: Рейтинг темы: голосов - 35, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 35
1

Аффинные преобразования

27.03.2014, 19:13. Показов 7246. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть набор точек, по которым строится изображение. Так вот это изображение нужно повернуть аффинными преобразованиями. Я беру каждую точку и преобразую её вот по этой формулам
x(новый) = x(старый) * cos(30) - y(старый) * sin(30)
y(новый) = x(старый) * sin(30) - y(старый) * cos(30)
Изображение поворачивается, но вместе с тем оно сдвигается в другую область экрана. Как оставить только поворот, без сдвига?
C++
1
2
3
4
5
6
7
8
9
10
int xt[500], yt[500];
            for(int i=0; i<n; i++){
                xt[i] = x[i]; //в массиве x находятся x координаты
                yt[i] = y[i]; //в массиве y находятся y координаты
            }
            for(int i=0; i<n; i++)
            {
                x[i] = xt[i] * cos(20) - yt[i] * sin(20);
                y[i] = xt[i] * sin(20) + yt[i] * cos(20); 
            }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2014, 19:13
Ответы с готовыми решениями:

Аффинные преобразования
Преподаватель сказал переделать лабу, чтобы можно было не отрисованный в программе...

Аффинные преобразования
Доброго времени суток! Возникло 2 вопроса: 1) Создание горячих клавиш: брала образец кода на...

Аффинные преобразования в с++
помогите кому не лень,лабораторку сделать. суть такая:на форме в системе координат по задаваемым...

Аффинные преобразования
помогите пожалуйста с задачкой:help: отражение получилось, остальное не выходит :umbrage: Для...

3
Эксперт функциональных языков программированияЭксперт по математике/физике
4300 / 2091 / 431
Регистрация: 19.07.2009
Сообщений: 3,162
Записей в блоге: 24
27.03.2014, 19:44 2
Лучший ответ Сообщение было отмечено inham130 как решение

Решение

Ваше преобразование (поворот на некоторый угол) является не только аффинным, но и унитарным, т.е. линейным ортогональным. Такие отображения не меняют нуль, т.е. нуль неподвижный.

Аффинное преобразование в общем случае = поворот + сжатие + трансляция.

Замечание 1. Когда рисуется изображение, экранная координатная сетка и рабочая система координат могут отличаться, поэтому стоит переводить туда-обратно (это сжатие + трансляция)

Замечание 2. Может быть необходимость вращать не около нуля, а около другой точки. Тогда преобразование будет представимо в виде
https://www.cyberforum.ru/cgi-bin/latex.cgi?x' = x_0 + (x-x_0)\cos\beta + (y-y_0)\sin\beta
https://www.cyberforum.ru/cgi-bin/latex.cgi?y' = y_0 - (x-x_0)\sin\beta + (y-y_0)\cos\beta

Глядя на Ваш код, могу предположить, что либо Вы не переводите экранные координаты в рабочие, либо вращайте не около нуля, а около другой точки. В любом случае, конечная формула получится одной, независимо от пути рассуждений. Вид этой формулы я написал выше.
4
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 35
27.03.2014, 21:04  [ТС] 3
Большое спасибо! Вы мне очень помогли!
0
Shiningemerald
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
14.10.2020, 09:41 4
Mysterious Light, простите что тыкаю палкой старую тему, могли бы вы помочь по данной теме?

Мне интересно аффинное преобразование.
0
14.10.2020, 09:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2020, 09:41
Помогаю со студенческими работами здесь

аффинные преобразования в vs 2003
Всем доброго времени суток ... В общем, есть MFC-приложение на С++ в 2003 студии ... Есть класс...

Аффинные преобразования изображения
Добрый день. Написал небольшое приложение, которое осуществляет поворот нарисованного объекта...

Аффинные преобразования. Вращение
Не могу понять, как сделать поворот(вращение) фигуры во круг какой-нибудь из своих точек. Фигура...

Аффинные преобразования на плоскости
построить матрицу поворота вокруг точки А сс кординатами а в на угол фи построить матрицу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru