Показать сообщение отдельно
Старый 09.11.2009, 21:50
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 10  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Тогда
Цитата:
Сообщение от SamFR Посмотреть сообщение
Можно (и даже лучше) взять не такую формулу, а что-то типа вашОбъект.rotation = angle0 + (angle1 – angle0)*t/T, где angle0 – начальный угол поворота в радианах, angle1 – конечный угол поворота в радианах, t = getTimer() – t0 задаёт текущее время.
Или проблема в том, как узнать, сколько раз нужно прокрутить объект между angle0 и angle1 (если принять, что оба угла лежат между 0 и 2*PI)? Здесь однозначного решения нет.

Можно смотреть, сколько раз object.rotation перешёл значения PI/2 и -PI/2, и в какой последовательности. И на основе этого предполагать, сколько было сделано полных оборотов.

Либо изначально количество оборотов задавать не вращением объекта, а, например, перетягиванием ползунка (вводом числа). Тут уж всё зависит от специфики.

Но, как мне кажется, общая схема, если не получается точно определить количество оборотов, такова: узнали angle0 (object.rotation перед началом вращения объекта пользователем) и angle1 (object.rotation в конце вращения объекта пользователем), а также [N], то есть количество полных оборотов. Далее к angle0 и angle1 прибавили (вычли) период (то есть 2*PI) столько раз, чтобы оба угла лежали на полуотрезке [0; 2*PI). Далее к angle1 прибавали количество полных оборотов, умноженное на 2*PI (то есть angle1 += [N]*2*PI). Далее вращаем.


Последний раз редактировалось SamFR; 09.11.2009 в 22:17.