Модераторы: SoWa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простейшая модель столкновений, Идеи есть? или ссылки ? 
:(
    Опции темы
Ivan_Batsuev
  Дата 4.5.2005, 08:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











smile
При рассмотрении простейшей модели идеального газа надо описывать столкновение молекул (движение их внутри сосуда делается вообще элементарно). Так вот, для условия столкновения приходится вешать код на каждый момент времени и для каждой молекулы прогонять цикл (проверка на удалённость). Это в свою очередь довольно сильно загружает компьютер?

Нет ли более рациональных алгоритмов smile
[/quote]
  Вверх
AlDev
Дата 4.5.2005, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 9
Всего: 50



Эт в алгоритмы
PM MAIL WWW ICQ YIM MSN   Вверх
Jlekc
Дата 4.5.2005, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: 3
Всего: 4



движение хаотическое, было бы направленое мона сделать через матрицы, а тут разробатывать алгоритм(( оно того не стоит.

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


--------------------
PM MAIL ICQ   Вверх
VAN
Дата 4.5.2005, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



Не сказал бы, что движение хаотическое: скорости молекул по осям хранятся в отдельном массиве.
Они только исходные случайные.
А если брать около 50 молекул то движения и не получается (всё-таки тормозит)
smile
Добавлено @ 11:41
А как через матрицы?
PM MAIL   Вверх
Jlekc
Дата 4.5.2005, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: 3
Всего: 4



Цитата(VAN @ 4.5.2005, 11:41)
Не сказал бы, что движение хаотическое

они у тя не ходят в строй?

хаотическое - после столкновения меняеться вектор, и масс дополнительных параметров.

выложи сорс, посмотрим чо мона оптимизнуть.


--------------------
PM MAIL ICQ   Вверх
VAN
Дата 5.5.2005, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



В принципе всё довольно просто
(я Flash-ем недавно начал заниматься smile );

Код

class Mol extends MovieClip {
    static var rad:Number=10;
    var v_max_1:Number=6;
    static var  v_max:Number=0;
    static var arr:Array=[], speed_x:Array=[], speed_y:Array=[], x_1:Array=[], y_1:Array=[];
    static var rast:Array=[], v_x_prom:Number=0, v_y_prom;
//-------------------------------------------------------------------------------------------------
    var i:Number=0;
    function dobavl():Void {
        v_max=v_max_1;
        _x=Math.random()*480+10;
        _y=Math.random()*280+10;
        _height=10;
        _width=10;
        arr.push(this);
        speed_x.push(1-2*Math.random());
        speed_y.push(1-2*Math.random());
        x_1.push(_x);
        y_1.push(_y);
        if (arr.length==1) {
            setInterval(moving, 50);
        }
    }
//-------------------------------------------------------------------------------------------------
    function moving():Void {
        for (var i=0; i<arr.length;i++) {
            stolk(i);
            if ((arr[i]._x+speed_x[i]*v_max)<rad) {
                arr[i]._y=speed_y[i]/speed_x[i]*rad+(arr._y-speed_y[i]/speed_x[i]*arr._x);
                arr[i]._x=rad;
                speed_x[i]*=-1;
            } else if ((arr[i]._x+speed_x[i])>(500-rad)) {
                arr[i]._y=speed_y[i]/speed_x[i]*(500-rad)+(arr._y-speed_y[i]/speed_x[i]*arr._x);
                arr[i]._x=500-rad;
                speed_x[i]*=-1;
                
            } else {
                arr[i]._x+=speed_x[i]*v_max;
                
            };
            if ((arr[i]._y+speed_y[i]*v_max)<rad) {
                arr[i]._x=speed_x[i]/speed_y[i]*(rad-arr[i]._y)+arr[i]._x;
                arr[i]._y=rad;
                speed_y[i]*=-1;
                
            } else if ((arr[i]._y+speed_y[i]*v_max)>(300-rad)) {
                arr[i]._x=speed_x[i]/speed_y[i]*(300-rad-arr[i]._y)+arr[i]._x;
                arr[i]._y=300-rad;
                speed_y[i]*=-1;
                
            } else {
                arr[i]._y+=speed_y[i]*v_max;
                
            }
        }
        updateAfterEvent();
    }
//-------------------------------------------------------------------------------------------------
    static function stolk(i:Number):Void {
        for (var k=0;k<=arr.length;k++) {
            if (k!=i) {rast[k]=Math.sqrt(Math.pow((arr[k]._x-arr[i]._x),2)+Math.pow((arr[k]._y-arr[i]._y),2))+5;};
            if (k!=i && rast[k]<2*rad) {
                v_x_prom=speed_x[k];
                speed_x[k]=speed_x[i];
                speed_x[i]=v_x_prom;
                v_y_prom=speed_y[k];
                speed_y[k]=speed_y[i];
                speed_y[i]=v_y_prom;
            }
        }
    }
}

это сам класс молекул.
Все они полностью одинаковы.
Да и скорости по осям в любой момент времени можно использовать...

PM MAIL   Вверх
VAN
Дата 5.5.2005, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



Молекулы "прыгают" в прямоугольнике 490*290 и координатами (10;10) smile
PM MAIL   Вверх
VAN
Дата 5.5.2005, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



Извиняюсь, в восьмой строчке метода Moving() вместо spped_x[i] надо надо записать speed_x[i]*v_max smile
PM MAIL   Вверх
Jlekc
Дата 5.5.2005, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: 3
Всего: 4



с первого взгляда, у тя действительно замного циклов((, оптимизнуть тут будет что.

хмм, неплохо бы есе скинул не ток движок на движения, а и всю визуализацию (нуна както тестить).


--------------------
PM MAIL ICQ   Вверх
VAN
Дата 6.5.2005, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



Сама программа.
Класс:

Это сообщение отредактировал(а) VAN - 6.5.2005, 07:48

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  Mol.as
PM MAIL   Вверх
VAN
Дата 6.5.2005, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



Сам документ (движение молекул)

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  model.fla
PM MAIL   Вверх
AlDev
Дата 6.5.2005, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 9
Всего: 50



Это-же с Гурского.... только маленько исправлено....
PM MAIL WWW ICQ YIM MSN   Вверх
VAN
Дата 6.5.2005, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



Цитата
Это-же с Гурского.... только маленько исправлено....

а) В Гурском идёт трёхмерная модель.
б) Удар о борт я писал сам.
в) Из Гурского я взял только само условие задачи, а что что-то совпало я не виноват.
PM MAIL   Вверх
Jlekc
Дата 6.5.2005, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: 3
Всего: 4



а я его книгу не читал, хмм. ща заценим чо он умеет


--------------------
PM MAIL ICQ   Вверх
Jlekc
Дата 6.5.2005, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: 3
Всего: 4



мда, тормоза-тормоза.
вопрос: а на какое количество объектов ты расчитываеш7
возможности флеши весьма малы, в 8-ой версии изменили движок, там пожалуйста, а тут ...
Добавлено @ 11:04
ЗЫ: а почему не использовать хитТест, описать его как событие и поставить на прослушку.
под объектом сделать прозрачный бекгроунд диаметр которого будет соизмеримый со скоростью.
События будут срабатывать часто но это не постоянный цикл.


--------------------
PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы про программирование на ActionScript 1,2 (Flash 8 и более ранние версии) пишите в форуме ActionScript 1,2
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Flash | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.