CodeNet / Приложения / Графика / Учебник по компьютерной графике
Компьютерная Графика
Двумерный алгоритм преобразование в новые координаты
- Введение
- Поворот
- Матричная запись
Поворот.
Пусть необходимо повернуть точку P(x, y) вокруг начала координат O на угол (фи) . Изображение новой точки на рис. 2.2. обозначим через P’(x’, y’). Всегда существуют четыре числа a, b, c, d, такие, что новые координаты могут быть вычислены по значениям старых координат x и y из следующей системы уравнений:
Для получения значений a, b, c, d рассмотрим вначале точку (x, y) = (1, 0). Полагая x =1 и y =0 в уравнении (2.1), получим
y' = c
Но в этом простом случае, как это видно из рис. 2.3(а), значения x’ и y’ равны соответственно Cos (фи) и Sin (фи). Тогда будем иметь:
Аналогичным образом из рис. 2.3(б) следует
Тогда вместо системы уравнений (2.1) можем записать
Система уравнений (2.2) описывает поворот вокруг точки O - начала системы координат. Но часто это не то, что нам нужно. Если требуется выполнить поворот относительно заданной точки, то в этих уравнениях можно заменить: x - на (x-xo) , y - на (y-yo), x’ - на (x`-xo) и y’ - на (y`-yo) (сдвигаем систему координат) .
Система уравнений, которая описывает поворот точки вокруг любой точки:
Система уравнений (2.3) неудобна для реализации на PC. Применяем матричную запись.
Оставить комментарий
Комментарии
Спасибо.
В-твоем случае угол а - это абсолютный угол, т.е. для вычисления этого угла необходимо вычислить начальный угол и прибавить дельта угла.
А также необходимо вычислять радиус
И мы в итоге придём именно к такой формуле, которая показана выше.
Не забывай что в условии задачии мы имеем координаты точки х,у центр вращения хо и уо, а также дельта угла поворота.
Никаких радиусов и углов у нас нет.
Первый курс первый семестр аналитической геометрии. :))
вот получше :)
х-=sin(a)*r;
y-=cos(a)*r
x,y - центр вращения
r - радиус (расстояние от центра вращения до точки)
a - угол
можно поиграться с знаками, с изменением радиуса (спираль)