LINUX.ORG.RU
ФорумTalks

о физике


0

1

Добрый день. Вопрос скорее к знатокам школьной физики, чем к программистам.

Нужно имитировать движение, вращение и столкновения тел. В приложенной картинке нарисовано упрощенное представление физического тела(чёрные точки, соединённые линяими) в момент действия на него силы. Если прямолинейное движение тела легко представить 2м законом Ньютона(и я для этого рассчитываю ускорение, вызванное суммой всех сил), то как описать вращение я не очень представляю. Момент каких сил надо искать? Если сил несколько - как получить результирующую силу/момент? Чем лучше описывать вращение - линейной/угловой скорость, угл. ускорением?

Всем спасибо.

image

★★★

Последнее исправление: pseudo-cat (всего исправлений: 1)
Ответ на: комментарий от anonymous

> Да вообще-то не важно сколько кругов, решение одинаково для любого количества.

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

Откуда? Во-первых, для этих уравнений оценки для шага может не быть вообще

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

AIv ★★★★★
()
Ответ на: комментарий от AIv

> Ну ка батенька, давайте в студию алгоритм для системы абс жестких кругов на плоскости!

Возьмите алгоритм из любого физического движка.

Слушайте, уже хватит глупости писать, лучше почитайте про молекулярную динамику что нить

Рассматриваемая задача к молекулярной динамике вообще никак не относится.

и про теорию колебаний

И к теории колебаний в том числе.

Про линеаризацию что нить слышали?

И с линеаризацией никак не связана. Вы просто решили побросаться баззвордами, смысла которых не понимаете?

то никого точное решение вообще не интересует

Правда? А для кого алгоритмы collision detection пишутся? Для неинтересующихся? или вы под точным решением понимаете аналитическое? Ну о нем речи и не шло изначально, ясное дело.

anonymous
()
Ответ на: комментарий от AIv

Да, кстати, пусть уравнения внешней силы задаются мышкой (берем шарик и драг-энд-эдропом бросаем в сторону, естественно, внести это воздействие мы можем влюбой момент моделирования) - давайте, оцените шаг. Это ведь так просто!

anonymous
()
Ответ на: комментарий от anonymous

> Возьмите алгоритм из любого физического движка.

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

Рассматриваемая задача к молекулярной динамике вообще никак не относится.

начнем ка с того, что задача вообще не поставлена никак, а софрмулированнпая ТСом постановка проще всего решается именно методами молек динамики, см тред.

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

В отличии от Вас, я за свои слова отвечаю, поскольку довольно плотно занимаюсь всяким разным моделированием.

AIv ★★★★★
()
Ответ на: комментарий от anonymous

> Да, кстати, пусть уравнения внешней силы задаются мышкой (берем шарик и драг-энд-эдропом бросаем в сторону, естественно, внести это воздействие мы можем влюбой момент моделирования) - давайте, оцените шаг. Это ведь так просто!

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

AIv ★★★★★
()
Ответ на: комментарий от AIv

я могу сформулировать только так как сам понимаю. Нужно реализовать механику твердого тела. к.тел пусть порядка 10в3.

Не могли бы вы привести пример расчета столкновения двух материальных точек с осязаемой массой, причем одна соединена также с третьей неупругим стержнем. Углы столкновения сами по себе неизвестны, все направления задаются векторами. мне бы это очень помогло, особенно с пониманием расчета силы от третьей точки в сторону связи.

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от AIv

да 3мерное и ось времени. также я пока не хочу усложнять все законом гука и считаю все связи полностью упругими

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

> я могу сформулировать только так как сам понимаю.

Тогда отвечайте на вопросы;-) Размерность пространства все таки какая? И что из себя представляют тела?

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

Могу привести пример для тв. тела находящего под действием внешних сил - считаете момент инерции отн центра масс тела (на плоскости, в 3D это тензор), каждую силу раскладываете на компоненту в напр ц.м. (она даст вклад в поступ движение) и компоненту перпендикулярную напр к ц.м. (умножаем на расст до ц.м., получаем момент силы). Складываем все моменты сил, делим на момент инерции, получаем угл. ускорение. Но в 3D даже для одного тела это связано с громоздкими выкладками (даже на одном шаге числ схемы), а для сист. сталкивающихся тел это будет вообще геморрой.

Гораздо, гораздо, ГОРАЗДО проще представить каждое тело как набор мат. точек и невесомых упругих связей между ними. Задава с потолка потенциала взаимодействия между мат точками и связями (для разных тел) и закодировав все это получите вполне адекватную модель. Потенциалы надо брать отталкивающие короткодействующие, напр U(r_ij)~ 1/|r_ij| при r_ij < r_min.

AIv ★★★★★
()
Ответ на: комментарий от AIv

Может лучше всё-таки почитать какую-нибудь теорию по созданию физических движков?

pathfinder ★★★★
()
Ответ на: комментарий от pseudo-cat

>>пока не хочу усложнять все законом гука и считаю все связи полностью упругими

Нехило так делишь на нуль.

Тела конечных размеров? Связь тоже выступает как rigid body: балка с длиной и шириной? В таком случае нужно реально забыть про молекулярную динамику, которую тут форсит avl на своих простынях, пересказывая казуальные текстбуки, и осилить матчасть по любому физическому движку типа http://books.google.com/books/about/Game_physics_engine_development.html?id=O... и по ссылкам. От расчета перекрытия полигонов никуда не деться - а писать свои алгоритмы быдет только идиот.

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

anonymous
()
Ответ на: комментарий от anonymous

Я то думал - нетипичный какой то лоровский анонимус, несет ахинею но хотя бы не хамит... а вот гляди ж ты - ошибся, и хамит в тч.

Деточка, а как по вашему передается нагрузка по твердой балке-связи? если скажем молотком дать по одному концу? Прежде чем делать высказывания «космического масштаба и космической же глупости» подучили бы физику в рамках средней школы, а лучше первых курсов вуза.

AIv ★★★★★
()
Ответ на: комментарий от AIv

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

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

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от AIv

насчет невесомых упругих связей между точками - их упругость будет использованна для нахождения деформации и применим закон гука?

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от AIv

>>а как по вашему передается нагрузка по твердой балке-связи? если скажем молотком дать по одному концу?

Да наплевать как. Ты же не станешь моделировать перекрытие электронных облаков для расчета сгибания гвоздя под ударами твоих микроскопов?

Если у тебя абсолютно твердые балки на шарнирах, то спускаться на атомный уровень и даже на уровень конечных элементов нет никакой необходимости. Это обсосанная тысячи раз задача динамики rigid bodies с constriaints-ами. Балка в ней - два треугольника. А в предлагаемом тобой варианте - сотня точек c парным взаимодействием, оправданная только при появлении резинок и пружин.

Так что не по делу брякаешь опять.

anonymous
()

Для такой имитации нельзя рассматривать тела, как точки, нужно учитывать материалы, размеры, массу, плотность.

wlan ★★
()
Ответ на: комментарий от AIv

> Вы сделали некое довольно сильное утверждение, когда я Вас попросил его обосновать Вы принялись меня отсылать к каким то любым физическим движкам.

Вы попросили меня сделать пруф утверждения - я вам указал этот пруф, а теперь вам что-то не нравится?

начнем ка с того, что задача вообще не поставлена никак, а софрмулированнпая ТСом постановка проще всего решается именно методами молек динамики

Угу, я вижу ваше «проще всего», как попросил три кружочка обсчитать - так уже начали отнекиваться словами о том, что это-де прямо рокетсаенс.

anonymous
()
Ответ на: комментарий от AIv

> Макс силу развиваемую мышкой оценить довольно просто, это раз.

А еще можно всегда в качестве шага взять машинный эпсилон.

Мгновенное воздействие вообще влияет на шаг опосредованно, через макс допустимую энергию столкновений, это два, и при таком воздействии ничего не стоит эту энергию пересчитать и скорректировать шаг.

Ну, я соглашусь, с кружочками такое прокатит, плохой я пример выбрал. А вот если это произвольные многоугольники - все равно вам руками придется отслеживать столкновения и отдельно расчитывать момент и точку столкновения и никакая попытка предрасчитать шаг - не поможет.

anonymous
()
Ответ на: комментарий от wlan

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

а как вы предлагаете представлять сложное тело по-другому?

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

1) Вы так и не ответили что у Вас за тела

2) Еще концептуальный вопрос -а ЗАЧЕМ Вы это делаете? Это игрушка, это моделирование поведения спутника в куче мусора, это расчет экскаватора с пьяным оператором???

особой разницы между представлением через точки и тела с центром масс не вижу.

Между стержнем и гантелей с одинаковыми массами разница в моменте инерции в полтора раза. Но можно добиться и соответствия, если скажем часть массы перенести в центр гантели. Там есть еще отличия, но для ИМИТАЦИИ они не оч существенны.

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

Я выше уже писал что делать, но Вы скажите что за тела и зачем оно все надо;-)

насчет невесомых упругих связей между точками - их упругость будет использованна для нахождения деформации и применим закон гука?

Да. В 3D придется учитывать взаимод. с гранями, т.е. задача неск сложнее. Придется реализовывать какой то контроль столкновений (вот напр, не читал но оглавление разумное http://gdlinks.hut.ru/cdfaq/), потому что 1000 тел это 10^4-10^5 точек, каждая с каждой это будет долго считаться.

И главное - по скромному личному опыту моделирования, моделировать что либо не представляя детально ВСЮ цепочку (физ.мат. постановка->числ схема->код) совершенно бесполезно, Вы не сможете отладить код потому что не сможете локализовать ошибку. Так что или берите в команду хорошего механика, или сами садитесь за книжки.

AIv ★★★★★
()
Ответ на: комментарий от anonymous

> Вы попросили меня сделать пруф утверждения - я вам указал этот пруф, а теперь вам что-то не нравится?

Единственный приведенный пруф - пруф на книжку, которой нет в свободном доступе, и которая просто начинается с главы «физика частиц», где приводится схема прыгающей лягушки, расчет сил между частицами и пр, т.е. практ полный аналог молек динамики. Я же просил у Вас не пруф, я просил алгоритм для абс жестких дисков на плоскости. Я напр один из вариантов себе представляю, и представляю какие там ждут сложности, но Вы ж считаете себя специалистом и наверняка знаете какой то ну совсем простой алгоритм, даже проще чем схема с перешагиваем. Так вот жду-с...

все равно вам руками придется отслеживать столкновения и отдельно расчитывать момент и точку столкновения

Вы путаете мух с котлетами. Контроль столкновений это метод ОПТИМИЗАЦИИ, и да, он позволяет находить точки и моменты столкновений. Нашли. ДАЛЬШЕ ВЫ ЧТО ДЕЛАТЬ БУДЕТЕ, КАК ОБСЧИТЫВАТЬ СТОЛКНОВЕНИЯ ДВУХ ТВЕРДЫХ ТЕЛ СЛОЖНОЙ ФОРМЫ? Я пока не спрашиваю - как обсчитать столкновения скажет трех твердых тел, Вы про два сначала скажите.

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

AIv ★★★★★
()
Ответ на: комментарий от anonymous

> Если у тебя абсолютно твердые балки на шарнирах, то спускаться на атомный уровень и даже на уровень конечных элементов нет никакой необходимости. Это обсосанная тысячи раз задача динамики rigid bodies с constriaints-ами. Балка в ней - два треугольника. А в предлагаемом тобой варианте - сотня точек c парным взаимодействием, оправданная только при появлении резинок и пружин.

Не сотня а две (три если хочется точности). Еще раз, для тех кто в танке. У ТСа стоит задача имитации, причем уровень ТСа в механике весьма низок. Предлагаемый мной вариант куда проще для осмысления и реализации, чем предлагаемый Вами вариант, хотя мой вариант требует большего машинного времени. Ну ка, сравните ка уравнения для моделирования кувыркающегося тетраэдра в мол. динамике (4 точки 6 пружинок) и в мех. тв тела (тензора). Что проще? А теперь у-я для кувыркающегося тетраэдра, налетевшего вершиной на плоскость?

Так что не по делу брякаешь опять.

А вот Вы точно ошиблися, брякает у Вас в штанах.

AIv ★★★★★
()
Ответ на: комментарий от AIv

>>Еще раз, для тех кто в танке. У ТСа стоит задача имитации, причем уровень ТСа в механике весьма низок.

У врача стоит задача операции, причем врач на самом деле - забойщик скота. Поэтому бедолаге-пациенту из танка лучше не вылезать.

А теперь у-я для кувыркающегося тетраэдра, налетевшего вершиной на плоскость?

Не так все сложно, как кажется на первый взгляд непосвященному. Но согласен, вещь на любителя, особенно в 3d. Но все движки используют именно его, а динамика частиц возникает только для жидкостей/газов. Ибо для твердых тел это серьезное увеличение числа степеней свободы - на каждое твердое тело возникает паразитная и избыточная информация о возбужденных собственных колебаниях, например.

Но для простого понимания, не спорю - лучше замоделить частицами.

Не сотня а две (три если хочется точности).

Для балки конечного размера никак не три. Либо в два слоя частицы, либо в линию, но плотно и с трехчастичным потенциалом для жесткости.

anonymous
()
Ответ на: комментарий от anonymous

> Для балки конечного размера никак не три.

Три частицы обеспечивают момент инерции аналогичный сплошной балке. Много частиц надо брать если требуется учет деформаций балки в процессе соударения, но в этом случае как бы альтернатива - считать балку уравнения сплошной среды - еще хуже.

Кстати, про соударения - Вы надеюсь в курсе что результат (по физике) существенно зависит от соотношения размеров и модулей упругости материалов сталкивающихся тел? Что если напр рассматривать задачу о соударении стального шарика и прута, то результаты в приближении асб тв тела будут отличаться от реальности в разы?;-)

AIv ★★★★★
()
Ответ на: комментарий от AIv

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

тела не ограничиваются по форме; по всему остальному - обычные тела нашего мира, ковер к примеру, просто если надо вычислять пересечения плоскостей граней тел, то видимо прийдется делать фигуры с элементарным строением для упрощения расчетов.

я сейчас сделал прототип для просто мат. точек. И естественно они проходят через др.др., дружно обмениваясь силами. не хватает силы противодействия при ударе. из выше вами написанного мне не вьехать. по идее она должна быть прямопропорциональна массе. С другой стороны я могу просто присваивать точке, которая ударила, скорость ударенной, но корректно ли это?

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от anonymous

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

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

AIv ★★★★★
()
Ответ на: комментарий от pseudo-cat

Ясненько. Тогда читайте термех и книжки про физ движки.

Самый простой (ИМНО) вариант - каждое тело задаем как многогранник, масса распределена по мат точкам в вершинах. Координаты точек задаются в удобной сист координат связанной с телом, начало координат совпадает с центром масс тела.

Движение каждого тела описываем координатами и скоростями центра масс, углами поворота сист координат относительно общей сист координат и моментом импульса. Пишите для всей этой кухни collision detector.

Каждое тело как то кувыркается себе кувыркается (идете с фикс шагом) пока не тукнется в другое тело. Будем считать тела абс твердыми, тогда время столкновения равно нулю. Есть два типа соударений - вершина-грань и ребро-ребро. При соударении расписываем законы сохранения (энергии, импульса и момента импульса) лишь для тех частиц, которые в соударение были вовлечены. Перед соударением переходим к импульсам частиц сталкивающихся тел, после соударения некоторые импульсы меняются, возвращаемся к импульсам и моментам импульса тел целиком.

По физике тут много грубых предположений, но для имитации сойдет.

AIv ★★★★★
()
Ответ на: комментарий от AIv

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

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

в принципе абсолютно тв. тела полетят вместе со скоростью по зак. сохр. импульса. а бильярдные шары не абс. тв.?

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

Затем, что для 10^3 тел (~10^5 точек) + довольно маленький шаг -> большое время счета для игрушки. Если это не пугает - работайте с силами вдоль связей, но некий аналог детектора столкновений все равно писать придется (для взаимод с ребрами и гранями)

AIv ★★★★★
()
Ответ на: комментарий от pseudo-cat

> в принципе абсолютно тв. тела полетят вместе со скоростью по зак. сохр. импульса. а бильярдные шары не абс. тв.?

Не понял вопроса, почетче можно сформулировать?

AIv ★★★★★
()
Ответ на: комментарий от AIv

если есть 2 материальные точки, одна с нулевой скоростью другая со скоростью v, то по закону сохранения импульса результирующая скорость обеих точек после столкновения будет иметь направление v и точки будут двигаться вместе. С бильярдными шарами, по моему опыту, если столкновение в лоб, ситуация другая, вот у меня и возник вопрос - неверно представлять бильярдные шары(при столкновении в лоб) как мат. точки?

Также не очень понятно как оперировать силами при столкновении, а со скоростями можно работать по зак.сохр.имп. или энергии.

Еще возникла трудность с балкой. Если представить ее двумя точками и связью и придожить силу к одному из концов, то не понятно как искать влияние на другой конец и со стороны другого конца. Хотя, видимо так и должно быть и балку надо представлять или тремя точками или брать центр масс и работать с угловыми скоростями.

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

> если есть 2 материальные точки, одна с нулевой скоростью другая со скоростью v, то по закону сохранения импульса результирующая скорость обеих точек после столкновения будет иметь направление v и точки будут двигаться вместе.

Это только в случае абсолютно неупругого удара.

С бильярдными шарами, по моему опыту, если столкновение в лоб, ситуация другая, вот у меня и возник вопрос - неверно представлять бильярдные шары(при столкновении в лоб) как мат. точки?

Представлять верно, если выбрать правильный потенциал взаимодействия.

Также не очень понятно как оперировать силами при столкновении, а со скоростями можно работать по зак.сохр.имп. или энергии.

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

Еще возникла трудность с балкой. Если представить ее двумя точками и связью и придожить силу к одному из концов, то не понятно как искать влияние на другой конец и со стороны другого конца. Хотя, видимо так и должно быть и балку надо представлять или тремя точками или брать центр масс и работать с угловыми скоростями.

Пусть речь идет о столкновении с одним из концов. Если Вы разрешаете столкновение (т.е. идете с шагом много меньшем времени столкновения) то все получится само. Если столкновение мгновенное, то считаете через законы сохранения столкновение двух мат точек (налетевшей точки и конца) а потом да, возвращаетесь для балки к угловым скоростям и скорости центра масс, это куда быстрее в вычислительной точки зрения. Третья точка нужна только для обеспечения правильного момента инерции балки - у балки I=m l^2/12, у гантели аналогичной массы m l^2/4. Поэтому приходится брать три точки, две с массами m/6 по краям и одну с массой 2m/3 в центре (если не напутал).

AIv ★★★★★
()
Ответ на: комментарий от AIv

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

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

Батенька, какая мера инерции O_O??? Да, по третьему закону светлой памяти Исаака Ньютона будут силы равные по модулю и противоположные по направлению. Масса позволяет вычислить ускорение (если силу на массу поделить, 2й з-н Исаака Ньютона).

Ну книжку чтоль откройте, нельзя же так...

AIv ★★★★★
()
Ответ на: комментарий от pseudo-cat

Батенька, Вы меня утомили. Вас с литературой работать учили?

Взяли гугл в руки вперде, тем более что на этот вопрос (про силы) я уже отвечал.

http://www.moldyn.ru/library/manual/p1-4.htm

http://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BD%D1%82%D1%80%D0%B0%D0%BB%D1%8C...

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.