|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.02.2009, 00:15 | #1 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Вопрос по математической стороне алгоритма.
Известна точка O(x0,y0) - точка вокруг которой вращается другая точка, в данной системе координат
известна точка A(x1,y1) - начальное положение точки в данной системе кординат известен угол поворота точки A(x1,y1) относительно точки вращения O(x0,y0) Как отсюда найти точку B(x2,y2), которая является результатом поворота точки A(x1,y1) вокруг точки O(x0,y0) на a градусов (или радиан, не столь важно). У меня какие-то мысли в голове были, однако выведеная геометрически формула оказалась (вроде бы) не правильной. Вот мое то, чтоя получил с помощью окружности радиусом R (как выяснилось он роли не играет) x2=x1*cos(a)+y1*sin(a) y2=y1*cos(a)+x1*sin(a) P.S. Просьба мою глупость списывать на сонливость, ибо уже ночь.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 04.02.2009 в 00:19. |
04.02.2009, 02:32 | #2 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
значит так
точку О примем за начало координат т.е. О(0,0), При повороте точки расстояние до нее от центра вращения не меняется и равно R^2 = x1^2 + y1^2 =x1^2 а координаты точки B : x2 = R * cos (a) y2 = R * sin (a) вот впринципе и все... я конечно не художник... нарисовал как мог... |
04.02.2009, 07:55 | #3 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Во, спасибо, так получилось...
По теореме Пифагора находится радиус... И еще в твое выражение прибавляются соответствующая координата оси вращения. т.е. x2 = R * cos (a) + x0; y2 = R * sin (a) = y0; Спасибо. P.S. Жалко, что графические примитивы, типа прямоугольника, он не переворачивает, а просто искажает, но с линиями вроде бы работает.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 04.02.2009 в 08:12. |
04.02.2009, 12:44 | #4 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
насчет прямоугольников :поидее , зная размеры прямоугольника, достаточно повернуть две точки а остальное дорисовать
ливоповорачивать все точки относительно точки пересечения его диагоналей |
04.02.2009, 15:02 | #5 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Просто получается прямоугольник не повернутый, а смещеный и искаженый. (просто из-за того, что его строят по двум точкам, что бы таких чудес небывало нужно хотя бы три точки).
Вобщем на рисунке показано какой прямоугольник строится по полученой при повороте диагонали. Видимо придется придумать свой алгоритм для рисования прямоугольника.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 04.02.2009 в 15:16. |
04.02.2009, 17:13 | #6 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
А вы слышали про афинные преобразования? Я думаю это самое оно - и выдумывать ничего не нужно.
|
04.02.2009, 17:24 | #7 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Откровенно говоря впервые слышу. Уже тянусь к кнопке поиска...
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
04.02.2009, 17:40 | #8 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Афинные преобразования - это когда у тебя все фигуры представлены в виде матриц точек. И ты умножением на соответствующую матрицу (поворот, перемещение, масштабирование), поворачиваещь, перемещаешь или масштабируешь изображение.
|
04.02.2009, 17:44 | #9 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
ага.. уже в общих чертах представляю что это.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Элементы математической логики. Высказывания | Vesnushka18 | Помощь студентам | 1 | 11.04.2008 17:40 |
по правой стороне поля, при печати, делает полосу | Виктор1966 | Свободное общение | 1 | 11.03.2008 13:08 |
Проверка размера файлов на стороне клиента (работа) | AndreyAndrey | Фриланс | 5 | 02.11.2007 19:13 |
Сложность Алгоритма | PChEL@ | Помощь студентам | 3 | 26.05.2007 07:56 |