ПрограммированиеФорумФизика

Вопросы по физике столкновений (2 стр)

Страницы: 1 2
#15
2:52, 13 авг 2013

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

#16
3:31, 13 авг 2013

UVW
> какую лучше?
да хоть какую. в твоём случае палка получит сильное вращение и почти не получит линейного импульса, потому что обменный импульс будет мал а плечо велико. поэтому изменение линейной скорости будет мало, а угловой - велико.

#17
3:39, 13 авг 2013

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

#18
3:45, 13 авг 2013

}:+()___ [Smile]
> Движение центра масс тела абсолютно не зависит от точки приложения силы
А от импульса?

#19
3:47, 13 авг 2013

UVW
> Вот я про это и говорю, что по моему дальнейшее движение тела(центра масс)
> зависит и от точки приложения, и от направления..
Оно зависит только от величины импульса, а не от его точки приложения. Вот только сама величина импульса зависит от точки удара, отсюда и возникает это кажущееся противоречие.

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

#20
3:49, 13 авг 2013

}:+()___ [Smile]
> Оно зависит только от величины импульса, а не от его точки приложения
а от направления импульса зависит?

#21
4:00, 13 авг 2013

Такс, вроде начал доперать, но только мне объясняли с фейса, а я видел всё с ребра..

#22
21:21, 5 сен 2013

Вобщем решил продолжить допиливать физику, есть вопросы по дальнейшему "допиливанию".

Переделал сегодня порядок различных действий в основном цикле движка, получилось вот что:
void Scene::Evalute(float dt)
{
  int iteration = 15;

  float ddt = dt / iteration;
  for (int i=0; i<iteration; i++)
  {
      fis.Impact(ddt);            // тут будет применение сил, пока только действует ускорение свободного падения (в статье пункт "воздействуем на систему")
      fis.CollisionDetection(); // определение всех столкновений
      fis.Solver(ddt);              // решение и нахождение импульсов по столкновению и по трению
      fis.Integrate(ddt);        // изменение позиции и поворота(ускорений нет, потому скорость тут не меняется)
  }
}

После того, как я сделал такой порядок, тела перестали(почти) проваливаться и без warmstarting и без псевдоскоростей, это вообще норм? раньше проваливались.
А больше интересует другая вещь, почему у меня тела так отталкиваются, как будто небольшой взрыв? если включить warmstarting, некоторые телу чуть ли не на марс улетают.

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

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Ещё есть пару вопросов по правильности алгоритмов.
вот есть такое замечание "Но, к сожалению, во время решения LCP, точки касания тел могут свободно наращивать свою скорость в направлении, перпендикулярном этому выбранному, что в результате приведёт к нестабильностям."
Я изначально сделал одноосевое, пока не увидел это замечание. Я сначала нахожу все лямбды для контактов не применяя их, чтоб скорости тел во время прохода цикла не менялись(система как бы замерла) а после нахождения в другом цикле(всё это в солвере) поочерёдно применяю импульсы для каждого тела, сначала на столкновение, затем на трение, и дальше для следующего тела. Но у меня направление скоростей и соответственно силы трения в цикле не меняется(импульсы будут применены после нахождения всех лямбд для всех коллизий) то можно ли использовать одноосевое трение? Если что-то не правильно, прошу объяснять попроще(я от школьной физики не далеко утопал).

Ещё вопрос, в абзаце про warmstarting написана такая строчка
lambda += (0.0f - accumulatedImpulse);
Почему не просто
lambda -= accumulatedImpulse;
Для чего это сделано?

#23
22:05, 5 сен 2013

> lambda += (0.0f - accumulatedImpulse);
потому что вместо 0.0f может быть другое значение ограничения

одноосевое трение может привести к дрожанию, но едва ли к взрывам. отлаживай без warmstarting'а - стабильно должно работать и без него.

#24
23:02, 5 сен 2013

Так это и так без warmstarting'а, вообще ничего нет кроме трения и отскока, интересно то, что раньше именно дрожание было, а теперь какая-то ерунда.. фиг знает почему так может быть

Страницы: 1 2
ПрограммированиеФорумФизика

Тема в архиве.