LINUX.ORG.RU
ФорумTalks

о физике


0

1

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

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

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

image

★★★

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

Если сил несколько - как получить результирующую силу/момент?

имеется в виду для вращательного движения

Учебник физики есть под рукой?

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

pseudo-cat ★★★
() автор топика

> имитировать движение, вращение

Вы тела рассматриваете как точки? Тогда каков физический смысл вращения для них и зачем вам оно?

geekless ★★
()

> Чем лучше описывать вращение - линейной/угловой скорость, угл. ускорением?

Скорость и ускорение - разные вещи, так что понадобиться и то, и то. Скорость - это, скажем так, текущее состояние м.т.(если рассматривать м.т. как автомат с состоянием, то одна из компонент состояния будет выразать скорость объекта), а ускорение определяет изменение этого состояния\компоненты состояния во времени.

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

мне интересно какой величины достаточно для расчёта на каждой итерации по времени? Какие величины повлияют на следующую итерацию?

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

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

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

> мне интересно какой величины достаточно для расчёта на каждой итерации по времени? Какие величины повлияют на следующую итерацию?

Скорость будет нужна точно, т.к. она выражает суммарное воздействие сил на объект до текущего момента времени. Про ускорение ничего не могу сказать, т.к. не знаю, как оно в твоей задаче производится и как будет представляться время(важный момент кстати).

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

> Очевидно, нужны и скорость и ускорение.

Я бы не был так категоричен на счёт ускорения, т.к. его присутствие, как параметра объекта, на мой взгляд, будет очень сильно зависеть от задачи и от способа задания временной шкалы(дискретная или скачками от события к событию). Хотя если время будет задаваться дискретно, то ускорение будет нужно.

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

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

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

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

Дело не в способе задания времени. Ускорение надо хранить потому что оно будет изменяться при взаимодействии тел.

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

>>В физике вращение описывается трехмерным тензором вращения + моменты инерции, которые тоже можно собрать в тензор.

Это что за новости? Единственный тензор - это как раз тензор моментов. Угловая скорость - псевдовектор, и если хочешь поумничать, то это псевдотензор.

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

Зависит от используемой разностной схемы. Иногда призодится знать и хранить ускорения. man leapfrog integration.

anonymous
()

И да, моделировать тело с жесткими связями довольно муторная задача. Гораздо проще взять систему материальных точек и упругие связи (пусть и с большой жесткостью). Направленные связи (т.е. когда углы между связями исходящими из одной точки фисированы) реализуются введением дополнительных связей, напр если есть связи AB, BC и нужно зафиксировать угол ABC вводится связь AC

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

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

Megamozg
()

> Нужно имитировать движение, вращение и столкновения тел.

Это совсем не так просто, как кажется на первый взгляд. На больших скоростях тела начнут проскакивать друг сквозь друга, особенно если должны были столкнуться кончиками. А когда ты сгонишь несколько тел в тесную кучку, они начнут упруго рикошетить друг об друга по over9000 раз в секунду. Проблем множество, и для многих из них удачное решение тянет на кандидатскую диссертацию. Если не в учебных целях моделируешь, то лучше озаботиться выбором готовой библиотеки. http://en.wikipedia.org/wiki/Physics_engine

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

Я говорю про тело, изображенное у ТС, кружочки то моделировать просто. И да, можно до опупения придумывать свои алгоритмы, но есть молекулярная динамика и есть например динамика космического полета (когда массивный и разлапистый спутник кувыркается по орбите), там это все разжеванно давным давно. Молекулярная динамика несравнимо проще и для понимания и для реализации (если смотреть на уровне ТС).

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

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

Не тянет ни разу. Задача многих тел пишется за одно-два занятия среднестатистическим студентом 3го курса МФТИ, за три занятия в параллельной реализации. Всякие рикошеты и проскоки убираются правильным выбором числ схемы (метод Верле) и шага по времени.

AIv ★★★★★
()

Тред не читал, но вам нужен тензор инерции.

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

> Всякие рикошеты и проскоки убираются правильным выбором числ схемы (метод Верле) и шага по времени.

А как метод верле связан с рикошетами и проскоками?

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

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

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

При достаточно малом шаге гарантируется, что не будет ни рикошета (артефактного) ни проскоков.

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

А связь это и есть стержень.

Еще раз, у Вас есть два пути:

1) Моделировать движение твердого тела.

2) Моделировать сист. материальных точек с упругими связями.

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

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

Создаем массив связей, каждая связь это пара индексов в массиве частиц (кто с кем связан).

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

Выбираем шаг по времени h.

Дальше в цикле пр времени (это не Верле а прыгающая лягушка, но оно тоже работает):

1) проходим по всем частицам, нулим ускорения, сдвигаем частицы на полшага, те. x+=h*v/2

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

3) проходим по всем частицам, меняем скорости как v+=h*a

4) проходим по всем частицам, сдвигаем частицы на полшага, те. x+=h*v/2, выводим результат.

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

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

о малое от т в четвертой степени, если Вы про ВЕрле, то остаток разложения в ряд Тейлора.

AIv ★★★★★
()

Посмотрите CUDA'вские примеры. Там было и движение вязкой жидкости, и взаимодействие шариков в замкнутом пространстве (под влиянием гравитации с заданным g, под влиянием упругих сил или без них, под влиянием притяжения между телами или без него).

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

> При достаточно малом шаге гарантируется

Вот только алгоритм автоматического выбора «достаточно малого шага» у тебя остался не описан ;D

что не будет ни рикошета (артефактного)


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

ни проскоков


Ну и каким боком тут аппроксимация численной схемы? O(t), O(t^2), O(t^4). По твоей теории получается, что выбирай «достаточно малый шаг», и будет счастье :D

Manhunt ★★★★★
()

движение и вращени: решай уравнение лагранжа. столкновение: не знаю.

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

там шарики, меня интересют сложные фигуры

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

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

К этой проблеме разработано несколько разных подходов, каждый из которых имеет свои преимущества и недостатки..

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

> Вот только алгоритм автоматического выбора «достаточно малого шага» у тебя остался не описан ;D

Достаточно контролировать полную энергию.

А что делать с не-артефактным рикошетами?

Не артефактные рикошеты должны остаться.

Ну и каким боком тут аппроксимация численной схемы? O(t), O(t^2), O(t^4). По твоей теории получается, что выбирай «достаточно малый шаг», и будет счастье :D

Уже при O(t^2) именно так (на разумных временах). Ваши представления о сложности задачи сильно преувеличены. Есть например общепринятая в молек. динамике практика, эта тема изучена вдоль и поперек. Почему например белки так считать получается (с не только качественным и количественным совпадением) а у ТСа ИМИТАЦИЯ не должна получится?

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

> что такое потенциал межчастичного взаимодействия

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

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

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

В хороших пакетах так и делают, но для Вас это пока лишнее.

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

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

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

> Почему например белки так считать получается (с не только качественным и количественным совпадением) а у ТСа ИМИТАЦИЯ не должна получится?

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

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

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

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

> Если заданны потенциалы и характерные параметры

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

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

> То есть без этого и ТС счет запустить не смогет.

С чего ты взял? Легко смогет. Возьмем простейшую модель - два круга на плоскости. Уравнение, задающее внешние силы - входной параметр. Априорной информации, которая позволит расчитать, шаг, не имеется, однако смоделировать движение кружков нам ничто не помешает.

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

в смысле это нужно для определения силы противодействия? я думал достаточно знать плотность связей и массу тела

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

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

Уравнение, задающее внешние силы - входной параметр.

И вот отсюда получит шаг.

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

> в смысле это нужно для определения силы противодействия?

Да

я думал достаточно знать плотность связей и массу тела

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

У Вас задача то скольки мерная? И сколько в ней тел?

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

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

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

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

> Если эти круги считать абс жесткими

Ну а какими же еще?

Но для трех кругов это уже гораздо тружнее реализовать.

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

вот отсюда

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

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

> тел произвольное к.,

к какого порядка ожидается? 10, 100, 10^6, 10^12???

пространство четырехмерное.

O_O ??? x,y,z, щ? Декартово четырехмерное? Или все таки четвертая координата это время?

Как я понял для моделирования движения и столкновения недостаточо просто сил прямого взаимодействия, трения, сопротивления воздуха, притяжения?

Это зависит от того, какую именно задачу Вы решаете. Вы какую решаете, физическую постановку можно (если это не есть предмет гостайны)?

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