![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
гравитация и её последствия [Delphi, Windows]
TButton © (2006-05-26 17:57:00)свершилось! =)
я собрал мысли в кучу и вдохновлённый передачей про зарождение солнечной системы в целом и земли в частности
написал систему взаимогравитирующих частиц
прикрутил это к движку на qPixels
(2Д, говорите, не модно)
и получилось собственно вот это
http://slil.ru/22783716
очень долго мучался с настройкой мировых констант
но вроде бы что-то получилось
tButton (2006-06-06 16:20:00) [41]дядя Думкин, у меня в руках "Справочник по элементарной физике" (Издательство "Наука" Главная редакция физико-математической литературы, Москва 1965г.)
цитирую
Движение тела характеризуют также другой величи-
ной, называемой количеством движения: K = mv. Если
приложенная сила постоянна по величине и направле-
нию, то
F = (mv[t] - mv[0]) / t, или F[t] = mv[t] - mv[0].
Величина F[t]называется импульсом силы
* квадратные скобки интерпретировать как подстрочный текст
вот теперь я не вкуриваю что из этого тот импульс, который вы у меня спрашивали и как это считать если у меня нет реальной возможности запоминать v[0] для каждой частицы?
регардс
Cash (2006-06-05 12:20:00) [42]tButton © (05.06.06 10:47) [99]
Имеешь ввиду гравитационный ветер? Срывать крыши домов на соседних
планетах??? :)))
Интересная мысль! стоит попробовать...
Cash (2006-06-05 12:13:00) [43]tButton © (05.06.06 07:51) [98]:
d:=abs(dx)+abs(dy);
это пока эксперемент, естественно появилась погрешность. Я исправлю.
v:=sqrt(P2.g/(d*d*d))*FTicks;
Мне сперва показалось, что так должно быть лучше, а потом и на практике
подтвердилось. Там же как, под корень можем заносить ставя в квадрат,
вот я и занес. Из за этого +10 точек можно ставить.
Т. е. вот так так:
sqrt(P2.g/d)*FTicks/d == sqrt(P2.g/(d*d*d))*FTicks
Кстати из за такого вычисления d тоже +10-15 точек прибавилось, код легче
стал то есть.
tButton (2006-06-05 10:47:00) [44]реализация
1. А = сила действующая частицей №1 на точку массой 1, находящуюся на расстоянии равном радиусу частицы №1
2. Б = сила действующая частицей №2 на точку массой 1, находящуюся на расстоянии равном расстоянию от частицы №1 до частицы №2 - радиус частицы №1
3. если Б > А
3.1. отделяем от частицы №1 частицу массой 1 и располагаем её на расстоянии равном 1.1 радиуса частицы №1
т.о. получаем два варианта
1) частица 1 перетекает в частицу два, если частица два сильнее в гравитационном плане (и наоборот)
2) частицы перетекают друг в друга и образуют новую частицу (частицу + остатки старых), если частицы равны или приблизительно равны
получается этакая жидкая вселенная
tButton (2006-06-05 07:55:00) [45]из интересных мыслей
* пусть и не визуальное, но перетекание вещества с одной частицы на другую при определённых условиях
когда для точки единичной массы притяжение соседней частицы больше чем притяжение собственной
tButton (2006-06-05 07:51:00) [46]в редакторе не смотрел, но вот этот кусок кода из doTick меня пугает
dx:=P2.x-P1.x;
dy:=P2.y-P1.y;
d:= abs(dx)+abs(dy);//sqrt(dx*dx+dy*dy);
v:=sqrt(P2.g/(d*d*d))*FTicks;
P1.vx:=P1.vx+v*dx;
P1.vy:=P1.vy+v*dy;
sr:=P1.Radius+P2.Radius;
if d < sr then Collide(P1,P2);
сумма квадратов никак не равна кубу суммы
это в принципе
сумма приращений коорднинат взятых по модулю имеет весьма опосредованое отношение к радиусу и не может использоваться для проверки коллизии
потому что в противном случае коллизия будет происходить на расстояниях больших чем сумма радиусов точек
но хрен с ним с радиусом
меня больше пугает квадрат из коэффициента гравитации делённого на куб суммы приращений координат
я может просто не понимаю, хитрости этого оптимизационного хода, но он никак не приводится у меня к той формуле, которая была в исходном варианте
Думкин (2006-06-05 05:27:00) [47]> Cash © (04.06.06 07:47) [95]
> Будет сложно... но можно!
Рад слышать, что поняли. :)
Следить и выправлять - один способ, не очень удобный. Проще поступить иначе. Посчитать полный импульс системы, найти скорость центра масс. Затем перейти в другуюю систему отсчета отняв от всех скоростей полученый вектор. В итоге импульс системы будет 0. И таковым и должен оставаться до конца своих дней. :)
Сил вчера не нашлось - только в 00-00 закончил возиться с посадками, а потом баня и еле сегодня встал в 6-30. Но раз вопрос разрешился, то и не стоит видимо заморачиваться. Удачи.
Cash (2006-06-04 09:47:00) [48]Да, вот оно, в примере:
зеленый треугольник - начало координат,
линия - результат сложения всех векторов,
серый диск - центр масс системы.
http://webfile.ru/976391- пример
http://webfile.ru/976392- модуль
Да, кстати, после еще одной дороботки количество звезд можно поднимать
до 500, FPS у меня при этом составляет ~40.
(Но только ни в этой версии)
Cash (2006-06-04 07:47:00) [49]Думкин © (04.06.06 05:46) [94]
> В прежней модели дрейф наблюдался?
И еще какой! Но я не ставил целью победить дрейф системы.
У меня знаний мало для этого, а толмуд по физике доставать нет сил... :)
> Что было изменено в модели, что это дрейф вы победили?
Всего лишь уменьшил трудоемкость алгоритма с N^8 до N^2, плюс
приписал каждой планете свою гравитацию, она не рассчитывается теперь
на лету.
> Но увеличивая число частиц, как и писал, мы по всей видимости
> сужаем возможные вариации
Товарищ Думкин, земляк!, приклоняю колени. Вы отрыли мне глаза.
Я и забыл про это! Уж чего чего, а эту самую вещь я забыл. Действительно,
распределение импульсов неравномерно и суммарный импульс не нулевой.
Я же сам наблюдал за этим...
В таком случае необходимо всегда контролировать полный импульс системы
и распределять импульсы на точки так, чтобы импульс системы был нулевым.
Будет сложно... но можно!
Думкин (2006-06-04 05:46:00) [50]> Asteroid © (03.06.06 17:10) [92]
После того как запостил, то понял к чему вы. Но если еще точнее, то связи между состаляющими одной звезды не только гравитационные, потому для них до удара и на близком расстоянии можно ввести дополнительно и другой род связи. Вот какой - это уже подумать надо. Если совсем в дебри то можно расмотреть столкновение двух капель.
> Fosgen (03.06.06 13:25) [88]
Ну вот и проявилось - тихо сам с собою, лишь бы пнуть меня. LMD. :)
> Cash © (03.06.06 13:43) [89]
> cyborg © (03.06.06 13:18) [87]:
> Да, центр масс гуляет. Так поступает любая система с неравномерно
>
> распределенной по площади массой. Весь космос на этом основан.
>
Извините, но чушь. Причем полная.
Относительно выбранной инерциальной системы отсчета в которой вы и задаете начальное распределение скоростей частиц системы. Я сказал, что проблема дрейфа решается 2-мя способами, так вот один из них - после задачи начальных данных перейти в другую инерциаьную систему.
А то что у вас не дрейфует(возможно - без чисел - только слова - ""Вроде, у бабки в огороде, а нам нужно в самый аккурат(с)), то у меня к вам 2 вопроса:
1. В прежней модели дрейф наблюдался?
2. Что было изменено в модели, что это дрейф вы победили?
Впрочем надо доказывать видимо не так. Ок. Если вечером найду силы - накидаю пару строк кода в которых приведу нужные величины. Выложу исходники, а не бинарник - во избежание кривотолков.
> А TButton идать ушел считать для товарища Думкина числа.
> :)
И правильно сделал. Это разумное дествие для понимания и решения проблемы, нежели - писать ерундой.
> cyborg © (03.06.06 13:18) [87]
Дело не в начальном положении центра масс. У нас есть система материальных точек с центральными силами взаимодействия. Система замкнута - внешние силы отсутствуют. Применяем мы к ней механику Ньютона, а за силу берем его закон тяготения. Ньютона. Да хоть СТО или ОТО - неважно, но в приведенных кодах ни тем ни другим и рядом не стояло.
2 закон Ньютона и его же тяготения. Все.
Так вот, для замкнутых механических систем в любой инерциальной системе отсчета верно:
1. Сохраняется полная механическая энергия.
2. Сохраняется момент количества движения.
и самое для нас интересное:
3. Сохраняется полный импульс систем, который состоит из импульсов его составляющих частиц. И в любом учебнике по механике показано, что это означает, что цетр масс имеет постоянную скорость относительно этой системы отсчета.
Все. Вот и возникает вопрос, а почему центр масс приводимой системы имеет ненулевую скорость относительно той системы что ввели?
Сгениерируем 2 частицы случайным образом - сложим импульсы? Какова вероятность, что сумма импульсов 0?
Но увеличивая число частиц, как и писал, мы по всей видимости сужаем возможные вариации. Что и подемонстрировал Cash введя 5000 частиц. Но проблемы то он - не решил.
Это проблема не плохих расчетов и т.п. Это просто физика показала, что - а так и должно быть. Не более.
TButton (2006-06-04 02:12:00) [51]ара, я нэмагу!
=)
пытался сообразить, что же делать с масштабами...
очень долго пытался...
ничего не сообразил
сейчас составляю список софта который мне понадобится
как только закончу - буду переставлять винду
> Ну только не надо, что: "Относительно начала координат",
> там и начала то толком нет.
как это нет?
система генерируется относительно точки 0:0
если кому интересно - могу добавить вывод координатной сетки
но это всё после виндов
ибо глюки одолели
за два года, знаете ли, даже XP Pro можно так мозги засорить...
Asteroid (2006-06-03 17:10:00) [52]> Думкин © (03.06.06 05:34) [83]
> Извините, а если разбить на шарики, что изменится? Силы отталкивания возникнут?
Отчего же? :) Всего лишь будет более точный расчет сил тяготеня с учетом распределения общей массы тела в некотором объеме.
Надеюсь, Вы не исопариваете тот факт, что такая модель более приближено к реальности, нежели бесконечно(*) малые точки, обладающие некоторой массой?
* В теории; при машинном вычислении конечные
Cash (2006-06-03 14:59:00) [53]точно! :)))
antonn (2006-06-03 14:18:00) [54]Cash © (03.06.06 13:43) [89]
В данной системе центр масс гуляет по идеальной элиптической траектории,
эпилептичекой траектории...
:)
Cash (2006-06-03 13:43:00) [55]cyborg © (03.06.06 13:18) [87]:
Да, центр масс гуляет. Так поступает любая система с неравномерно
распределенной по площади массой. Весь космос на этом основан.
Покоя нет и не будет, а гармония в хаосе! (ну, это как то по телеку псих
один сказал, а я просто приплести решил :) )
На самом деле систему эту можно установить в "одном месте", если
вокруг еще будут такие же, которые будут взаимодействовать с нашей
системой. Это к вопросу о внешних силах.
В данной системе центр масс гуляет по идеальной элиптической траектории,
так что если брать по времени, то центр масс не гуляет, он на месте. :)
(в промежутке времени, когда Ц.М. проходит полный эллипс, образуется
N одинаковых точек, т. е. этот Ц.М. в моменты времени. Дак вот, они тоже
образуют Ц.М., который стоит на месте!)
Да, кстати, а относительно чего мы рассматриваем движение центра масс
системы? Ну только не надо, что: "Относительно начала координат",
там и начала то толком нет.
А TButton идать ушел считать для товарища Думкина числа. :)
Fosgen (2006-06-03 13:25:00) [56]>Думкин © (03.06.06 05:32) [82]
Так что увы - хоть всю группу детсада приведите в 25 человек - аргумент хилый.- Замечательное Ваше сравнение участников данной ветки с...
после сильной укурки мухоморами или если вы ученик Эдельвейса Мавшкина, что впрочем ко всему вашему посту относится.- Единственная эта фраза полностью характеризует Ваше отношение к собеседнику. Видимо Вам очень знаком опыт "сильной укурки мухоморами", раз Вы приводите такие аналогии и Вы - на самом деле - единственный кому кажется что центр масс куда-то дрейфует...
Собственно говоря ругаться с Вами нет никакого желания, единственная цель беседы была показать бессмысленность спора, развязанного Вами. Но общаться с человеком, считающим себя пупом Земли - неинтересно и считаю ниже своего достоинства. Засим позволю себе откланяться, пожелав создателям программы - успехов.
cyborg (2006-06-03 13:18:00) [57]
> [86] Cash © (03.06.06 12:39)
Я не разбираюсь в астрономии и формулах, но и-то понял, вроде, о чём Думкин говорит. Центр масс в данном случае не нулевая точка. Так как звёзды генерируются рендомно с рендомным ускорением и направлением, то центр масс будет смещён.
Cash (2006-06-03 12:39:00) [58]Думкин © (03.06.06 05:45) [84]:
> А вы земляк зря так пишите.
То есть? Что не так?
> Вполне допускаю, что или не уходит или уходит очень медленно.
Коллега, скажу вам откровенно - не уходит!
Создайте 5000 звезд (только во время паузы!), запустите процесс и
удостоверьтесь в том, что через 10 < N < 40 минут (зависит от процессора)
все звезды устремятся к нулевой точке, т. е. к тому самому центру масс.
Cash (2006-06-03 12:36:00) [59]Думкин © (03.06.06 05:45) [84]:
Коллега, скажу вам откровенно - не уходит!
Создайте 5000 звезд (только во время паузы!), запустите процесс и
удостоверьтесь в том, что через 10 < N < 40 минут (зависит от процессора)
все звезды устремятся к нулевой точке, т. е. к тому самому центру масс.
Думкин (2006-06-03 05:45:00) [60]Для тех в танке - повторю:
Если дрейф центра масс прямолинейный и равномерный, то система верна и соответсвует элементарной механике. Если же биения и т.п. - то увы.
> Cash © (02.06.06 16:14) [76]
> Так, специально для товарища Думкина сделал систему без
> центральной звезды. На мой взгляд центр масс никуда не уходит, звезды
> кружат по всем канонам. Оптимизировать бы... Сообщите пожалуйста тормознее или быстрее работает, чем из [33].
Вполне допускаю, что или не уходит или уходит очень медленно. Частиц много, все скорости - случайны (местоположения). Поэтому импульс и должен быть в окрестности 0 близкой. Но предложенные алгоритмы не дают гарантии, что он нулевой. Именно это, по моему мнению и определяет дрейф системы. Скорость этого дрейфа может быть разной, но полностью, определяется начальным импульсом всей системы. Ибо внешних сил нет - он не меняется. Избавится от этого, как и писал - можно 2-мя способами.
Пока не будут получены в числе начальные значения импульса - весь разговор впустую.
А вы земляк зря так пишите. Не надо.