Показать сообщение отдельно
Старый 06.11.2009, 19:36
me2 вне форума Посмотреть профиль Отправить личное сообщение для me2 Найти все сообщения от me2
  № 7  
Ответить с цитированием
me2

Регистрация: Jan 2008
Сообщений: 84
Цитата:
Сообщение от SamFR Посмотреть сообщение
Да зачем же все эти ухищрения? Всё ж просто:

Код AS3:
//перед началом вращения
 
var t0:uint = getTimer(); //момент начала вращения
var T:uint = 10000; //полное время вращения (в мс.)
 
//каджый кадр
 
var t:Number = 2*(getTimer() - t0)/T - 1; //от -1 (в начале вращения) до 1 (в конце)
object.rotation = N*t*Math.PI; //от -N*PI в начале вращения до N*PI в конце
Таким же макаром можно, при желании, заставить угол изменяться по синусоиде, например. И про накопление погрешности можно забыть.
К чему-то подобному бесконечно стремятся мои умозаключения. Не совсем понятен T=10000; чуть подробней можно?

Еще раз про задачу.
Пользователь накручивает некоторый вектор Nое кол-во раз, может совершить хоть 20000 витков, и в этоге получится какой-то бешеный угол в 34234Пи+отступ
И вот на этот угол совершенно не торопясь будет поворачиваться объект. (r+=(endR-r)*speed)
Причём чем больше кол-во витков тем "туже" идёт поворот (скорость уменьшим), но это уже лирика =)

P.s.
немного пояснений: нет проблемы от -180 до 180, преобразовать это не составляет труда, есть проблема, что после 360 идёт 0 а не 361 и т.д.
Ибо при "мгновенном" повороте что 360 что 0 - одно и тоже, а при динамическом, думаю понятно как всё происходит.