Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Перетекание массы в массиве   Найти похожие ветки 

 
Septic   (2004-12-17 05:47) [0]

Нужен алгоритм реализующий перетекание массы в массиве. Дан массив в котором находятся капли, обладающие некоторой массой, большие капли притягивают мальенькие и сливаются с ними, и так до тех пор пока не останется одна капля. Массив 2-мерный. Капли могут иметь массу 0.


 
Бульдозер ©   (2004-12-17 14:07) [1]

> Капли могут иметь массу 0.
Капли не могут иметь массу 0. Любое тело должно обладать массой.

А вообще алгоритм прост:

Задание переменных позиции капли(S), предыдущая позиция(S_), масса(m).

для каждого цикла:
1) Нахождение вектора скорости: V=(S-S_)*fps
2) Сохраняем старые координаты.
3) Гравитация: V.y=V.y-9.8/fps
4) Сила притяжения к телам: перебераются все другие капли и данная капля притягивается к остальным по формуле(вроде правельная:) F=G*m1*m2/r^2. Отсюда находим ускорение (a=F/m), вектор которого направлен к другой капле(вычетаем координаты капель, нормализуем получившийся вектор и умножаем *a/fps)
5) Движение капли: S=S+V/fps.

Вроде должно работать. Кстати, хватит одномерного массива.


 
Algol   (2004-12-17 15:32) [2]

Могу вас огорчить, в такой постановке задача не имеет решения, поскольку возможны такие ситуации, когда капли вовсе не сольются в одну большую каплю ))


 
Бульдозер ©   (2004-12-17 16:42) [3]

> Algol   (17.12.04 15:32) [2]
Почему же, если будут лететь бесконечно долго, то сольются


 
TButton ©   (2004-12-18 07:56) [4]


> Почему же, если будут лететь бесконечно долго, то сольются

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


 
Septic   (2004-12-18 08:19) [5]

А как норма зизовать вектор? (Вопрос наверное тупой?)


 
Думкин ©   (2004-12-18 10:17) [6]

> [4] TButton ©   (18.12.04 07:56)

Ну и? Отталкивания же нет? Вот и сольются.

Я бы убрал пункт 3. Зачем он?

> [5] Septic   (18.12.04 08:19)

Вопрос не глупый, но говрящий о плохой продуманности всей темы вами.


 
Algol   (2004-12-18 10:26) [7]


> > Algol   (17.12.04 15:32) [2]
> Почему же, если будут лететь бесконечно долго, то сольются


Ну разве что бесконечно ...

> > [4] TButton ©   (18.12.04 07:56)
>
> Ну и? Отталкивания же нет? Вот и сольются.


Да не сольются они. Взгляните на Землю, которая вращается вокруг Солнца, и никак не может с ним слится... К чему бы это ? %)


 
TButton ©   (2004-12-18 17:04) [8]


> > [4] TButton ©   (18.12.04 07:56)
>
> Ну и? Отталкивания же нет? Вот и сольются.

у меня на столе лежат два стальных шарика
лежат давно, сливаться пока не собираются


 
Думкин ©   (2004-12-18 19:02) [9]

> [7] Algol   (18.12.04 10:26)
>  [8] TButton ©   (18.12.04 17:04)

Ребята, это от модели зависит или где?

Если шарики в космосе и одни? А про Землю - ну дык все ведь просто? Или разжевать?


 
Algol   (2004-12-18 21:47) [10]

2Septic

> большие капли притягивают мальенькие и сливаются с ними

А маленькие капли большие не притягивают что ли ?
Какие силы действуют в модели? Гравитационные?
Уточните модель.


 
Думкин ©   (2004-12-19 06:17) [11]

> [10] Algol   (18.12.04 21:47)

Вот-вот. Это самое интересное. Чего надо - алгоритма расчета по существующей модели или дать саму модель. Опять же модель чего?


 
йцукеук   (2004-12-19 14:58) [12]

Добавь силу трения пропорциональную кубу скорости.


 
Septic   (2004-12-21 16:54) [13]

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


 
Septic   (2004-12-22 03:20) [14]

Я тут сам кое-что придумал.
1. Осмотреть ячейки вокруг капли A на расстоянии L(первоначально L=1).
2.Если во всех ячейках 0, то L=L+1 и перейти к п.1.
3. Выбираем самую большую каплю из просмотренных ячеек, если она больше капли A, то перемещаем каплю A в ее сторону на 1 ячейку.


 
П7   (2004-12-22 13:20) [15]

Тогда возникает вопрос, с какой капли начинать "движение к слиянию", чтобы это реалистично смотрелось... (:


 
П7   (2004-12-22 14:32) [16]

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

http://animka.com/stuff/dropsalg.rar


 
Septic   (2004-12-23 05:10) [17]

А где взять p7_gfxvector.h? Мне для Builder надо.


 
П7   (2004-12-23 12:11) [18]

Здесь можешь взять p7_gfxvector.pas и самостоятельно под С++ переделать.

http://animka.com/stuff/p7_gfxvector.pas



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.052 c
1-1109922312
Шурик Ш
2005-03-04 10:45
2005.03.20
Из какой ветки реестра берутся рег. настройки нов. пользователя?


4-1107489071
guest_Dmitry
2005-02-04 06:51
2005.03.20
Открытие/закрытие приложения, ...


1-1109797832
Knight
2005-03-03 00:10
2005.03.20
Качать всем! Читать, а только потом с вопросами в основную... :)


11-1080292006
XmPL
2004-03-26 12:06
2005.03.20
Установка KOL/MCK с нуля


9-1103911275
Goldseeker
2004-12-24 21:01
2005.03.20
Динамическое создание объектов в glscene