Как рассчитать поворот изображения от прикосновений? - PullRequest
1 голос
/ 04 июня 2011

Я разработчик для iphone, но этот вопрос касается геометрии.

У меня есть простой прямоугольник (возможно, фото). Пользователь касается этой фотографии в точке и перетаскивает палец в новую точку:

http://dl.dropbox.com/u/792862/Untitleddrawing.png

Сколько радианов мне нужно повернуть этот прямоугольник, чтобы имитировать вращение, заданное касаниями?

Ответы [ 2 ]

2 голосов
/ 04 июня 2011

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

Сначала вам нужен метод, чтобы выяснить угол наклона линии. Функция atan2 (доступная в любой хорошо оборудованной математической библиотеке) определяет угол между любой линией и осью X. Сначала определите начальный угол:

startAngle = atan2(startY - originY, startX - originX)

А потом конечный угол:

endAngle = atan2(endY - originY, endX - originX)

А затем просто вычтите два угла друг от друга, чтобы выяснить ваше вращение:

angleToRotate = endAngle - startAngle

Возможно, вам придется поменять местами, в зависимости от того, как работают ваши вращения.

0 голосов
/ 04 июня 2011

Используйте atan2, чтобы преобразовать начальную точку и конечную точку в углы, после перевода каждого из них для исправления не-(0,0) исходного значения, если необходимо.

...