О. Федор
о, ништяк. ща разберёмся и доведём до юзабельного состояния. вопросы и замечания:
- в лагранжиане ошибка: ты расписал для случая, когда масса сосредоточена в узлах, а по условии задачи она в костях.
? ты уверен, что момент силы в лагранжиан входит именно в таком виде(-sum(M*ф))? не забывай, что под фi ты выбрал наклон i-го звена, а не угол между i-м и i+1-м.
- кажется, баг, где ты считаешь частную производную лагранжиана по ф'. не забывай, что d/dф'(ф'2) = 2ф'. там же не понял, откуда вылезла сумма [k, n], разве не должно быть просто mk?
- в случае, где берёшь частную производную по фk, аналогично, должно получиться -Mk а не -Mkфk
? не совсем понял, как предполагается брать полную производную по времени в последнем уравнении
Так, по поводу моментов понял. ты считаешь, что момент напрямую прикладывается к звену. чтобы напряжение возникало в сочленении, нужно просто к соседним звеньям приложить противоположные моменты. думаю над остальным.
Извиняюсь оффтоп: сделайте демку с нормальной моделью , например собаки, а не того , что есть.
Молодцы, идея интересна.
Suslik
> * линейые силы можно опустить, они суложняют математику, а использовать я их
> 100% не планирую
Зато я планирую. Я выложил просто свою предварительную модель, ту что пока наработал.
> - в лагранжиане ошибка: ты расписал для случая, когда масса сосредоточена в
> узлах, а по условии задачи она в костях.
Массы нужно ВСЕГДА распологать в узлах, это упрощает расчет. Если у тебя масса по условиям определена для костей, то раскидай ее на узлы.
> ? ты уверен, что момент силы в лагранжиан входит именно в таком
> виде(-sum(M*ф))? не забывай, что под фi ты выбрал наклон i-го звена, а не угол
> между i-м и i+1-м.
Имеется в виду внешний момент. Внутренний момент (между двумя костями) ты можешь представить как разность двух внешних моментов.
> - кажется, баг, где ты считаешь частную производную лагранжиана по ф'. не
> забывай, что d/dф'(ф'2) = 2ф'. там же не понял, откуда вылезла сумма [k, n],
> разве не должно быть просто mk?
Это да, упустил.
> - в случае, где берёшь частную производную по фk, аналогично, должно получиться
> -Mk а не -Mkфk
Конечно.
> ? не совсем понял, как предполагается брать полную производную по времени в
> последнем уравнении
от fi и fi', естественно, там появятся функции от fi,fi' и fi'', поэтому уравнение будет второго порядка.
Suslik
> Так, по поводу моментов понял. ты считаешь, что момент напрямую прикладывается
> к звену. чтобы напряжение возникало в сочленении, нужно просто к соседним
> звеньям приложить противоположные моменты. думаю над остальным.
Правильно, я об этом выше упомянул.
Исправил замеченные ошибки и продифференцировал последнию систему.
ksacvet777
> Извиняюсь оффтоп: сделайте демку с нормальной моделью , например собаки, а
> не того , что есть
вот ещё, зачем? это демка физики, а не графики.
О. Федор
> Массы нужно ВСЕГДА распологать в узлах, это упрощает расчет. Если у тебя масса по условиям определена для костей, то раскидай ее на узлы.
это rigid body физика, я задаю положение костей и скрепляю их суставами. в такой формулировке положить массу в суставы нельзя ну никак. а расчёт это да, упрощает. то есть я ищу аналитическое решение только для того, чтобы посчитать, какие моменты прикладывать к моделируемой численно системе твёрдых тел.
fxd: вообще, в принципе, можно указать, что центр масс кости находится в суставе. центр масс следующей кости - в следующем суставе, и так далее, центр масс последней кости находится в висячем конце. насколько это будет физично? могу просто смоделировать без внутренних напряжений, расскажу о результатах.
>от fi и fi', естественно, там появятся функции от fi,fi' и fi'', поэтому уравнение будет второго порядка
мне решительно не нравится перспектива решать систему диффуров. думаю, в моём частном случае она должна иметь какое-то халтурное решение, например, возможно, её можно свести к системе из трёх линейных уравнений.
ps респект за умение не бояться суровых вычислений и не бояться ошибаться.
Suslik
> это rigid body физика, я задаю положение костей и скрепляю их суставами. в
> такой формулировке положить массу в суставы нельзя ну никак. а расчёт это да,
> упрощает. то есть я ищу аналитическое решение только для того, чтобы посчитать,
> какие моменты прикладывать к моделируемой численно системе твёрдых тел.
Что тебе, трудно массы предварительно подсчитать? Берешь массу кости, делишь на два и эти результаты аддируешь в массы соответствющих шарниров. Вообще это не вопрос.
> fxd: вообще, в принципе, можно указать, что центр масс кости находится в
> суставе. центр масс следующей кости - в следующем суставе, и так далее, центр
> масс последней кости находится в висячем конце. насколько это будет физично?
Конечно, так делать нельзя, делай как я написал.
> мне решительно не нравится перспектива решать систему диффуров. думаю, в моём
> частном случае она должна иметь какое-то халтурное решение, например, возможно,
> её можно свести к системе из трёх линейных уравнений.
Это уравнение колебаний, для некоторых частных случаев и при упрощениях решение можно найти в квадратурах, но я думаю, что это не нужно. Это следует решать численно, проблем не вижу.
> ps респект за умение не бояться суровых вычислений и не бояться ошибаться.
Спасибо конечно, но вот тебе решение для внутренних моментов
В этом случае i момент - это момент между i-1 и i костями.
Посмотри обязательно на ошибки, я пока сильно не проверял.
О. Федор
> Что тебе, трудно массы предварительно подсчитать? Берешь массу кости, делишь на
> два и эти результаты аддируешь в массы соответствющих шарниров. Вообще это не
> вопрос.
у шарниров вообще массы нет. есть кости - твёрдые тела, заданные своим центром масс, ориентацией, линейной и угловой скоростями. на их степени свободы наложены ограничения: в определённых точках проекция относительной скорости на некоторые оси приравнивается к нулю, называются джойнтами. это не я это придумал, стандартный подход к моделированию динамики твёрдых тел. у меня экзамен завтра, пока математику проверять не могу, но позже обязательно посмотрю, спасибо.
>В этом случае i момент - это момент между i-1 и i костями.
может быть, проще ввести и углы не для наклона i-й кости, а угол между i-1 и i?
вопрос с массой, сосредоточенной в сочленениях, а не в костях открыт. во всей игровой физике принято в рэгдоллах массу сосредотачивать в костях, я не уверен, что сосредоточить её в суставах будет физически корректно.
Suslik
сорри за оффтоп, но у тебя в демках у "животного" задние ноги неправильной формы - одного сустава не хватает. Или для тебя это пока неважно?
Suslik
> у шарниров вообще массы нет. есть кости - твёрдые тела, заданные своим центром
> масс, ориентацией, линейной и угловой скоростями. на их степени свободы
> наложены ограничения: в определённых точках проекция относительной скорости на
> некоторые оси приравнивается к нулю, называются джойнтами. это не я это
> придумал, стандартный подход к моделированию динамики твёрдых тел. у меня
> экзамен завтра, пока математику проверять не могу, но позже обязательно
> посмотрю, спасибо.
Ну ты упоротый. Я же тебе объяснил как делать. Дело совсем не массе шарниров, делов в распределенной на шарниры массе. Это обычный прием из динамики машин.
> может быть, проще ввести и углы не для наклона i-й кости, а угол между i-1 и i?
Не проще, тогда появятся куча лишних зависимостей.
> вопрос с массой, сосредоточенной в сочленениях, а не в костях открыт. во всей
> игровой физике принято в рэгдоллах массу сосредотачивать в костях, я не уверен,
> что сосредоточить её в суставах будет физически корректно
Корректно, не переживай. А игровую физику давно уже надо ставить на прочную базу теории машин.
Помеха
> сорри за оффтоп, но у тебя в демках у "животного" задние ноги неправильной
> формы - одного сустава не хватает. Или для тебя это пока неважно?
Suslik еще помилосердствовал, я вообще рассматривал варианты с еще более усеченными конечностями животин. Для модели сойдет, а там можно будет дополнить до любой желаемой подробности.
Помеха
> сорри за оффтоп, но у тебя в демках у "животного" задние ноги неправильной
> формы - одного сустава не хватает. Или для тебя это пока неважно?
для меня важно, чтобы у каждой конечности было ровно три степени свободы. так ей существенно проще управлять. думаю, ходить возможно и с таким строением, хотя, конечно, неплохо бы добавить ещё ступню, так-то и на передних лапах тоже.
О. Федор
> Ну ты упоротый. Я же тебе объяснил как делать. Дело совсем не массе шарниров,
> делов в распределенной на шарниры массе. Это обычный прием из динамики машин.
да блин, ты пойми, нет ни в одном API такой функции "распределить массу сюда и вот сюда". есть твёрдые тела и их можно связывать джойнтами. как ты предлагаешь расположить твёрдые тела и джойнты для них, чтобы масса оказалась чудесным образом сосредоточенной в сочленениях?
Suslik
> да блин, ты пойми, нет ни в одном API такой функции "распределить массу сюда и
> вот сюда". есть твёрдые тела и их можно связывать джойнтами. как ты предлагаешь
> расположить твёрдые тела и джойнты для них, чтобы масса оказалась чудесным
> образом сосредоточенной в сочленениях?
Не колышет.
>Не колышет.
причина, почему я не могу расположить массу в узлах, проста: физически невозможно сосредоточить массу в узлах, а момент инерции - в костях. именно так ты считаешь в выкладках. дискасс.
Suslik
> причина, почему я не могу расположить массу в узлах, проста: физически
> невозможно сосредоточить массу в узлах, а момент инерции - в костях. именно так
> ты считаешь в выкладках
Сможешь, не сомневайся.
Итак смотрим на эту задачу. Дано:
Кость, с массой расположенной в центре тяжести и момент инерции кости.
Если исходную массу распределить на шарниры (концы кости), при этом пропорционально исходной их загрузке, то при условии коррекции и момента инерции (разведение масс приводит к увеличению момента инерции) путем вычитания из исходного момента инерции масс распределенных по шарнирам, то физически НИЧЕГО не изменится.
Этот метод имеет то преимущество, что новое распределение масс и новые моменты инерции костей нужно пересчитывать только ОДИН раз в начале расчетов.
Если же использовать массы расположенные в центрах костей, то ВСЯКИЙ раз причем в цикле придется пересчитывать координаты этой массы.
Тема в архиве.