Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.03.2009, 19:53
sinya вне форума Посмотреть профиль Отправить личное сообщение для sinya Посетить домашнюю страницу sinya Найти все сообщения от sinya
  № 1  
Ответить с цитированием
sinya
 
Аватар для sinya

Регистрация: Apr 2003
Адрес: Ukraine, Kiev
Сообщений: 189
Отправить сообщение для sinya с помощью ICQ
По умолчанию Вычисление начальной скорости

Привет!
Помогите решить задачку. Постараюсь растолковать подробно.

У меня есть объект. Ему придается начальная скорость по Х. Эта скорость с каждым кадром затухает, т.е. умножается на коэффициент 0.96. Вопрос в том, как мне лучше вычислить стартовую скорость объекта, чтобы он через определенное кол-во кадров очутился на определенном расстоянии?

Теперь то же самое конкретнее на примере: Есть объект._х == 0, у объекта есть скорость по Х. Есть ф-ция, которая добавляет к позиции объекта скорость и гасит скорость, умножая ее на коэффициент 0.96. Как проще всего вычислить начальную скорость для этого объекта, чтобы через 50 кадров (т.е. через 50 выполнений функции, которая добавляет к позиции объекта скорость и затухает ее) позиция объекта по Х стала, скажем, 300 ?

Надеюсь, доходчиво.
Спасибо.
__________________
Платон мне друг, но истина в вине.

Старый 19.03.2009, 19:55
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 2  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
А не проще xCurrent+=(xTarget-xCurrent)/кол-во кадров?

Старый 19.03.2009, 20:04
sinya вне форума Посмотреть профиль Отправить личное сообщение для sinya Посетить домашнюю страницу sinya Найти все сообщения от sinya
  № 3  
Ответить с цитированием
sinya
 
Аватар для sinya

Регистрация: Apr 2003
Адрес: Ukraine, Kiev
Сообщений: 189
Отправить сообщение для sinya с помощью ICQ
Мне нужно вычислить начальную скорость для объекта, а не перемещать его. Это для AI, чтобы комп мог рассчитать силу, с которой надо бросить предмет на определенное расстояние.
__________________
Платон мне друг, но истина в вине.

Старый 19.03.2009, 20:37
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 4  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Можно воспользоваться формулами движения. Либо взять из школьной физики (или математики), либо придумать самому.

В общем: путь является интегралом от скорости. Вы можете вывести нужную вам формулу и запрограммировать вычисление нужных значений исходя из неё.

Можно просто начинать считать с конца. Взять конечную точку (какая, кстати там будет скорость?) и пошагово вычислять положение объекта от конца к началу прибавляя скорость. При таком подходе будет присутствовать некоторая погрешность (в том случае, если движение объекта не уложится в целое число шагов).

Старый 19.03.2009, 20:58
sinya вне форума Посмотреть профиль Отправить личное сообщение для sinya Посетить домашнюю страницу sinya Найти все сообщения от sinya
  № 5  
Ответить с цитированием
sinya
 
Аватар для sinya

Регистрация: Apr 2003
Адрес: Ukraine, Kiev
Сообщений: 189
Отправить сообщение для sinya с помощью ICQ
Да, я уже разобрался. Натуральный логарифм помогает в данном случае.
Такая формула у меня работает: <нач.скорость> = (<расстояние> * Math.log (<коэф. затухания>)) / (<коэф. затухания-в-степени-равной-колву-кадров> - 1)
__________________
Платон мне друг, но истина в вине.

Старый 19.03.2009, 22:32
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 6  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Отличная догадка.
Неожиданное простое по реализации решение.

Старый 19.03.2009, 23:19
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Совсем в школе не учились? 0,96 это ускорение.
Формула такая
Цитата:
xt = x0 + u0 * t + a * t * t / 2;
Значит, начальная скорость будет
Цитата:
u0 = (xt - x0 - a * t * t / 2) / t;
Подставляем значение и вычисляем
Цитата:
u0 = (300 - 0 - 0.96 * 50 * 50 / 2) / 50
u0 = 6 - 0.96 * 25;
u0 = -18
Код AS1/AS2:
Проверяем
//// ускорение
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);
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 19.03.2009, 23:43
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 8  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
iNils, не та формула.
Это для равноускоренного движения. А у автора затухание зависит от скорости (теоретически, скорость никогда не сведётся к нулю).

Старый 19.03.2009, 23:58
sinya вне форума Посмотреть профиль Отправить личное сообщение для sinya Посетить домашнюю страницу sinya Найти все сообщения от sinya
  № 9  
Ответить с цитированием
sinya
 
Аватар для sinya

Регистрация: Apr 2003
Адрес: Ukraine, Kiev
Сообщений: 189
Отправить сообщение для sinya с помощью ICQ
У меня 0.96 - это не ускорение, а коэффициент. Скорость на него умножается.
А почему у Вас начальная скорость отрицательная, если начальное положение 0, а конечное - 300?
__________________
Платон мне друг, но истина в вине.

Старый 20.03.2009, 00:03
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
У меня 0.96 - это не ускорение, а коэффициент. Скорость на него умножается.
Ну, как хотите. Хотя странно.
Цитата:
А почему у Вас начальная скорость отрицательная, если начальное положение 0, а конечное - 300?
Это не у меня, а у формулы Какие данные дали, такие результаты и получились. и ничего удивительного в этом нет.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:26.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:26.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.