![]() |
|
||||||||||
|
|||||
|
Привет!
Помогите решить задачку. Постараюсь растолковать подробно. У меня есть объект. Ему придается начальная скорость по Х. Эта скорость с каждым кадром затухает, т.е. умножается на коэффициент 0.96. Вопрос в том, как мне лучше вычислить стартовую скорость объекта, чтобы он через определенное кол-во кадров очутился на определенном расстоянии? Теперь то же самое конкретнее на примере: Есть объект._х == 0, у объекта есть скорость по Х. Есть ф-ция, которая добавляет к позиции объекта скорость и гасит скорость, умножая ее на коэффициент 0.96. Как проще всего вычислить начальную скорость для этого объекта, чтобы через 50 кадров (т.е. через 50 выполнений функции, которая добавляет к позиции объекта скорость и затухает ее) позиция объекта по Х стала, скажем, 300 ? Надеюсь, доходчиво. Спасибо.
__________________
Платон мне друг, но истина в вине. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
А не проще xCurrent+=(xTarget-xCurrent)/кол-во кадров?
|
|
|||||
|
Мне нужно вычислить начальную скорость для объекта, а не перемещать его. Это для AI, чтобы комп мог рассчитать силу, с которой надо бросить предмет на определенное расстояние.
__________________
Платон мне друг, но истина в вине. |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 528
|
Можно воспользоваться формулами движения. Либо взять из школьной физики (или математики), либо придумать самому.
В общем: путь является интегралом от скорости. Вы можете вывести нужную вам формулу и запрограммировать вычисление нужных значений исходя из неё. Можно просто начинать считать с конца. Взять конечную точку (какая, кстати там будет скорость?) и пошагово вычислять положение объекта от конца к началу прибавляя скорость. При таком подходе будет присутствовать некоторая погрешность (в том случае, если движение объекта не уложится в целое число шагов). |
|
|||||
|
Да, я уже разобрался. Натуральный логарифм помогает в данном случае.
Такая формула у меня работает: <нач.скорость> = (<расстояние> * Math.log (<коэф. затухания>)) / (<коэф. затухания-в-степени-равной-колву-кадров> - 1)
__________________
Платон мне друг, но истина в вине. |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 528
|
Отличная догадка.
![]() Неожиданное простое по реализации решение. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Совсем в школе не учились? 0,96 это ускорение.
Формула такая Цитата:
Цитата:
Цитата:
Проверяем //// ускорение var a:Number = 0.96; //// начальная координата var x0:Number = 0; //// конечная координата var x:Number = 300; //// начальная скорость var u0:Number = -18; //// время движения var time:Number = 50; for (var t:Number = 1; t <= time; t++) { var xt:Number = x0 + u0 * t + a * t * t / 2; trace (xt); } |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 528
|
iNils, не та формула.
Это для равноускоренного движения. А у автора затухание зависит от скорости (теоретически, скорость никогда не сведётся к нулю). |
|
|||||
У меня 0.96 - это не ускорение, а коэффициент. Скорость на него умножается.А почему у Вас начальная скорость отрицательная, если начальное положение 0, а конечное - 300?
__________________
Платон мне друг, но истина в вине. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
Цитата:
Какие данные дали, такие результаты и получились. и ничего удивительного в этом нет. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|