Я делаю приложение paperjs, в котором у вас есть круги, и каждый круг может свободно перемещаться. Некоторые круги связаны друг с другом с помощью линий, которые заставляют круги приближаться друг к другу, т. Е. Линия имитирует резинку между кругами. Однако кругам не разрешается перекрываться, поэтому я хочу сделать какое-то противодействие. В настоящее время я реализовал это как отталкивающую силу между кругами. Для каждого круга я проверяю местоположение всех других кругов, и вектор скорости каждого круга увеличивается в противоположном направлении к кругу, близкому к нему, пропорционально тому, насколько он близок к этому. Таким образом, что-то вроде velocityvector += -(vectorFromThereToHere/10)
Как реализовать отталкивание между 2D-кругами (paperjs)
Однако это влияет на то, что между силой притяжения между связанными кругами и силой отталкивания между всеми кругами вы оказываетесь в непрерывном и постоянном дрожании.
Что было бы лучшим способом реализовать какое-то отталкивание между кругами, которое не вызовет каких-либо искажений, но просто позволит краям круга касаться друг друга, пока не приближается? По сути, я хочу, чтобы круги просто сталкивались друг с другом, не позволяли скользить друг над другом, но им разрешено скользить по внешнему краю друг друга без трений, чтобы добраться туда, где их импульс несет их.
Не могли бы вы обеспечить простой образец в виде фрагмента кода или в JSFiddle? –