Просмотр полной версии : Движение частицы под водой
Сижу, чего то не приходит в голову элегантного решения...
Требуется реализовать примерно такой эффект. Шарик разрывается на множество частиц (пусть, например, тоже шарики)... Они должны разлетаться от центра, как разлетались бы шарики под водой при отсуствии гравитации: резкое движение до полной остановки и зависли в воздухе....
Все это реализуется программно.
отсюда вопрос: какое уравнение движения у этих частиц?
Спасибо, заранее..
вот держи 'резкое движение до полной остановки '
(усорение/замедление тож несложно приделать)
а насчет 'уравнения движения у этих частиц', думаю ты погорячился: не флешовое это дело..
http://www.robertpenner.com/easing/easing_demo.html
бесплатные классы можно скачать оттуда же
ЗЫ это про "не флэшовое это дело" :D
ценные вещи,
есть из чего выбрать..( и не надо никакого 'разлета под водой')
Ок!... Всем спасибо, буду копаться :)...
PS: Конечно я не имел ввиду точного моделирования физики, мне более важно, чтобы это в принципе именно так виделось :)
На счет физики - можно подумать.
ктстаи применял физические формулы во флэше.
ВРоде бы не так вес плохо :-)
можно и в данном случае рассмотреть
например вверх сила Архимеда а виз сила тяжести.
mg-pgV=ma
отсюда искать ускорение например :-)
напрвить его вверх
или наоборт
pgV-mg=ma
тогда вверх :-)
тут важно ФПС делать большой
чтоб не прыгало все !
Вот!.. О том и речь, что можно ввести физику. Например, равноускоренное падение в этом же ролике у меня выглядит так:
_root.ball._y = y0+vy*time+(g*time*time/2);
Смысл в том, что при движении в жидкости есть зависимость ускорения от скорости. Т.е. шарик как будто в вату падает. Насколько я помню динамику такая формула где то есть, что то вроде "уравнение движения в вязкой среде" или что то подобное... Физическая достоверность мне не нужна, но пока я не могу никак добиться в движении этого ощущения вязкости.... Потому что там зависимость нелинейная и без формул мне кажется это кропотливо будет слишком..
Вот кто бы мне сказал эту формулу :)
Я так сразу и не помню.
Но могу сказать то, что действительно зависимость есть.
Это так называемое вязкое трение.
Там до определенного момента идет зависимость от V а после этого момента от v в квадрате .
Поищи в нете инфу по поводу вязкого трения.
Там должно быть все описано.
Оригинал написал(а) Dindin
http://www.robertpenner.com/easing/easing_demo.html
бесплатные классы можно скачать оттуда же
вроде всё понятно, а ... не получается... :( :( :(
как то же t (current time) и d (duration) рассчитать?
дайте исходник plz
Исходник чего? Программной анимации?
не совсем. изменение скорости движения объекта по заданному графику "скорость/время". вот. траекторию можно не трогать (иначе у меня крыша съедет).
по ссылке только конечные функции описаны... или я не спал долго и ничего уже не вижу
только ведь вотрая переменная (у господина RP) НЕ скорость... и не ускорение. потому что график движения БЕЗ ускорения выглядит (у него) как y=x. вторая переменная вроде как расстояние пройдённое ОТ НАЧАЛА ПУТИ.
блин, не важно. :D
не ясно в чем твои трудности :зачем тебе скорость-время, если можно координата-время?
2 silin : ну хорошо. а как сделать, чтоб в начале пути объект набирал скорость (разгонялся), в середине двигался равномерно, а в конце - "тормозил"? ...
FreakParty
20.07.2004, 06:14
А почему бы не сделать зависимость координаты от экспоненты или логарифма???
как сделать, чтоб в начале пути объект набирал скорость (разгонялся), в середине двигался равномерно, а в конце - "тормозил"? ...
берешь подходящую функцию, подгоняешь под свой расклад коэффициенты и в путь..
как вариант: разбиваешь диапазон на три части и каждую считаешь своей функцией
там по идее все проще и универсальнее. Робберта Пеннера попросить чтоль дать исходник?... :D
проще чем что ? (ты в его демо загляни - мало не покажется)
на вот пример с функцией от РП (если тебе именно это надо)
то бишь, вместо функции можно подставлять значения отсюда:
http://www.robertpenner.com/easing/easing_equations.as ?
вроде работает. Ж) только, иногда процесс длится до бесконечности (шарики улетают за экран).
ща будем разбираться КАК это работает. :D
спасибо.
BrainSmasher
23.07.2004, 18:15
Ну что сказать,
если отталкиваться от физики, то надо решать дифференциальное уравнение, т.к. движение тела в вязкой среде, как правило, не является равноускоренным (ибо сила сопротивления среды прямопропорциональна некой константе, зависящей от свойств среды и формы тела и квадрату скорости тела относительно этой среды).
В принципе уравнение не шибко сложное, но это как говорится, на любителя...
А если упростить задачу так подобное поведение частиц проще всего описать кусочной апроксимацией, можно линейной, можно нет.
Например, если T- полное время движения частицы от взрыва до останова, то 0 до t=0.3T частица движется с ускорением A с t=0.3T до t=0.5T с ускорением B и т.д. А координаты частицы на каждом из отрезков рассчитывать по формулам равноускоренного движения x=a*(t-T0)^2/2+V0*(t-T0)+X0, где t-время движения прошедшее от момента взрыва, T0-время начала очередного отрезка,X0 и V0-координаты и скорость частицы на момент начала очередного отрезка аппроксимации. Скорость естественно вычисляется как V=V0+a*(t-T0). а- соответственно ускорение на текущем отрезке. Естественно, что координаты и скорость - векторные величины и описываются двумя значениями. Поэтому аналогичные уравнения должны быть записаны и для координаты y.
Итак, если сначала a (т.е. в нашем примере A) положительно то частица летит ускоряясь, если а (т.е. в нашем примере B) равно 0, то частица летит с прежней скоростью, а если a<0, то частица тормозит. Для пущей реалистичности отрезков можно сделать 5-10 и на каждом задать соответствующее ускорение
Все.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.