В настоящее время я пытаюсь создать простой 2D-физический движок, и мне просто нужно знать, как разрешить определенное столкновение.
У меня есть частицы, а между любыми двумя частицами могут быть связаны пружины. Эти пружины могут иметь переменное натяжение и длину. Теперь предположим, что у меня есть другая частица, которая сталкивается с этой пружиной. Я хотел бы разрешить это столкновение так, как если бы пружина не могла согнуться, когда в нее ударяет частица, а просто ведет себя как палка в реальном мире. Я сохраняю скорости и положения всех частиц, а не угловой момент, так как же мне обновить скорости всех частиц?
Найдите центр масс (ЦМ) двух соединенных частиц. Затем определите расстояние ( r ) от центра масс той части пружины, куда попала третья частица. Затем, если бы вы могли учесть время и силу столкновения во время контакта и предположить, что столкновение происходит без трения (это может быть сложно для точечных частиц и тонкой пружины, потому что время замедления означает, что у него может быть достаточно времени, чтобы пересечь другую сторону. ), вы можете использовать T = Fr (r — расстояние CM до ударной части), предположим, что направление силы перпендикулярно пружине (без трения) и F = Ma, тогда T = IA = Fr.
Для поступательного эффекта двух частиц: используйте F = Ma, чтобы найти ускорение центра масс, a = F/M, где M — сумма масс двух пружин, затем примените ускорение к двум частицам (ускорение то же направление силы, которое перпендикулярно пружине).
Для эффекта вращения: Fr = IA (A — угловое ускорение, I — момент инерции: I = m1(r1)^2 + m2(r2)^2, r1 и r2 — расстояния двух частиц от центра масс) , поэтому A = Fr/I. Тогда (пусть Q1, Q2 — тангенциальное ускорение частицы 1 и 2), Q1 = r1*A, Q2 = r2*A. Затем мы можем применить тангенциальное ускорение к двум частицам. если часть удара пружины находится между CM и частицей 1, Q1 будет тем же направлением, что и сила, а Q2 будет противоположным направлением. если часть удара пружины находится между CM и частицей 2, Q2 будет тем же направлением, что и сила, а Q1 будет противоположным направлением.
Для третьей частицы, попавшей в нее: Просто F = ma. но направление этой силы равно, но противоположно по направлению вышеуказанной силе (закон равного и противоположного противодействия)
Что касается используемой силы, вы можете использовать силу, которая зависит от (ближайшего) расстояния третьей частицы до пружины и активируется при достижении определенного расстояния (скажем, 0,5 единицы). Затем, возможно, используйте возрастающую силу, когда они становятся все ближе и ближе (как прыгающий мяч), скажем, например, потенциал Леннарда-Джонса, где F = -dU/dx.
Джон Алексиу
2.71828-асы