Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.035 c
9-1104227841
Xenon
2004-12-28 12:57
2005.03.20
Вопрос про свойства объектов


1-1110352028
John
2005-03-09 10:07
2005.03.20
ListBox


14-1109459358
Копир
2005-02-27 02:09
2005.03.20
Деликатный вопрос. Девушкам не читать!


3-1108908091
NikNet
2005-02-20 17:01
2005.03.20
Чем отличается ключ и индекс и что лучше использовать для связи


3-1108706953
wHammer
2005-02-18 09:09
2005.03.20
Как в запросе сгруппировать записи по неделям





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский