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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.11.2011, 20:13
Alexmody вне форума Посмотреть профиль Отправить личное сообщение для Alexmody Найти все сообщения от Alexmody
  № 1  
Ответить с цитированием
Alexmody

Регистрация: Dec 2010
Сообщений: 177
По умолчанию Формула затухания силы взрыва

Реализую в флеш игре взрыв.
Есть три переменные: power (сила), distance (дистанция), vec (нормированный вектор, указывает направление взрыва.
Сейчас считаю итоговую силу взрыва (импульс) так: power / distance * vec. Не нравится, как получается затухание, чем ближе объект к источнику взрыва, тем более непропорционально увеличивается сила (особенно когда почти впритык).
Подскажите? какую формулу в данном случае лучше использовать, для пропорционально силы взрыва в зависимости от дистанции (затухание).

Старый 24.11.2011, 20:31
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 2  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Давайте для начала определимся с терминами - а уж с физикой справимся на раз-два).
во-первых, что есть вообще направленный взрыв?
Вообще советовал бы даже не вдаваясь в подробности использовать экспоненту типа exp(-k*distance) для затухания (если взрыв направленный - как я его понимаю - плоская взрывная волна, затухает только за счет рассеяния). Для всенаправленного взрыва использовать distance^-1.

Старый 24.11.2011, 20:53
Alexmody вне форума Посмотреть профиль Отправить личное сообщение для Alexmody Найти все сообщения от Alexmody
  № 3  
Ответить с цитированием
Alexmody

Регистрация: Dec 2010
Сообщений: 177
>>Давайте для начала определимся с терминами - а уж с физикой справимся на раз-два).
>>во-первых, что есть вообще направленный взрыв?

На самом деле взрыв у меня не направленный, а всенаправленный. Просто я перебираю физ объекты в сцене и направление задается как: позиция центр взрыва - позиция центра очередного объекта и все это нормирую. В реале же будет боаться не центр, а ближайшая точка формы объекта, но это сути не меняет.

Для всенаправленного взрыва использовать distance^-1.

Т.е. получается power / (distance ^ -1) * vec

Мне вот посоветовали что-то подобное: power / (distance ^ k) * vec, где k подбираемое число из диапозона [1 : 2].

Объясните пожалуйста почему у вас возводится в степень -1, а во втором случае предлагается диапазон от 1-2?


Последний раз редактировалось Alexmody; 24.11.2011 в 20:55.
Старый 24.11.2011, 21:24
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
^ это не возведение в степень, это XOR.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 24.11.2011, 21:31
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 5  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Ну вот яркость света для наблюдателя рассчитывается, как яркостьИсточника / квадратРасстоянияДоНаблюдателя. Расстояние в метрах, яркость в люменах (по-моему).
Думаю и со взрывом будет наподобие вышеизложенного.


Последний раз редактировалось i.o.; 24.11.2011 в 21:33.
Старый 24.11.2011, 21:41
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Взрыв, все таки, не свет.
http://www.pirotek.info/Start/pascetmocnosti.htm
__________________
משיח לא בא
משיח גם לא מטלפן


Последний раз редактировалось alatar; 24.11.2011 в 23:57.
Старый 24.11.2011, 21:46
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 7  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Все равно стоит ознакомиться с http://ru.wikipedia.org/wiki/%D0%97%...82%D0%BE%D0%B2

Старый 24.11.2011, 21:48
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 8  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Вообще 1/(r*r) в физике растёт из того, что если вот есть сферический взрыв в вакууме, то число частиц, пролетающих через единицу площади сферы вокруг этого взрыва пропорциональна 1/r^2 (r - радиус сферы). В плоском случае (когда не сфера а круг и речь идёт о числе частиц, пролетающий через единицу длины окружности) - 1/r. В невесомости в вакууме импульс, который передадут эти частицы так же меняется с расстоянием (потому что частицы взрыва летят равномерно и прямолинейно).
PS: в игре на самом деле подойдёт почти любая неотрицательная убывающая функция) Только советую, если расстояние больше некоторого, то взрыв на тело не применять вообще.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 25.11.2011 в 03:09.
Старый 25.11.2011, 02:26
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 9  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
^ - ЭТО Я как раз возведение в степень имел ввиду, а -1 - так это я ошибся. В знаменателе квадрат конечно должен быть

Старый 25.11.2011, 20:50
Alexmody вне форума Посмотреть профиль Отправить личное сообщение для Alexmody Найти все сообщения от Alexmody
  № 10  
Ответить с цитированием
Alexmody

Регистрация: Dec 2010
Сообщений: 177
Вообщем поэкспериментировал, построил графики с помощью ресурса: http://www.yotx.ru/default.aspx сделал следующие выводы:

В формулах опущу умножение на vec (направление).
y = 1/(x^k) - меняем k в диапазоне 0-1, хорошая формула. Если подставлять в k отрицательные значения, то будет: "чем дальше объект от центра взрыва, тем сильнее он будет получать, что конечно неправильно"
y = 1/sqrt(x^(k)) - меняем k в диапазоне 0-1, на основе вышеприведенной с корнем, тоже интересный результат выходит, хотя наверное лишнее
-----------
y=1/sqrt(x) - не особо пропорциональное увеличение силы взрыва к центру + без настроек коэффициента, ниже два схожих варианта гораздо лучше
y=1/(1+sqrt(x)), неплохой вариант, но еще лучше
y=1/(k+sqrt(x)) - меняем k в диапазоне 0-1, вот эта формула очень понравилась, дает хороший и гибкий в настройке вариант.

Победители:

y = 1/(x^k) - меняем k в диапазоне 0-1
y=1/(k+sqrt(x)) - меняем k в диапазоне 0-1

Всем спасибо, великолепно помогли.

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

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

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


 


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


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