Изначально нужно создать векторный редактор(используем svg) для того, чтобы пользователь мог сооружать систему сам.
Графический редактор должен содержать следующие типы объектов: неподвижные точки, материальные точки, пружины и стержни. Стержень может соединять только неподвижную точку с материальной. К материальной точке нельзя присоединить более одного стержня. Пружина может соединять либо две материальные точки, либо материальную с неподвижной. При этом пара точек может соединяться не более чем одной пружиной.
Материальные точки без стержней — свободные материальные точки, задаются двумя координатами, x и y. Материальная точка со стержнем образует маятник, координата ?.
Физика, на самом деле, не такая сложная, как кажется на первый взгляд. Можно для простоты считать, что все точки соединены со всеми пружинами — если пружины нет, то жёсткость «виртуальной» пружины равна нулю.
На каждый объект (свободная точка или маятник) действуют силы натяжения пружин со стороны всех остальных объектов, а также гравитация (должна быть кнопка или пункт меню, позволяющий её отключить). Для материальных точек рассчитываем равнодействующую всех сил, её проекции на оси X и Y. Для маятника — аналогично, только там будет момент силы. Зная силу (момент), можно определить ускорение.
Формулы можно выводить через лагранжиан, можно воспользоваться законами Ньютона.
Для каждого объекта отслеживаются координата и скорость. Скорость на следующей итерации вычисляется как v? = v + a·?t, координата x? = x + v·?t. Либо можно применить более точный метод Рунге-Кутты.
Масса каждой точки должна задаваться индивидуально. При выборе точки должно появляться окно свойств точки, где задаётся масса. С пружинами аналогично.
Радиус точки можно делать пропорциональным логарифму массы, тогда более тяжёлые будут изображаться крупнее.
А вот длина стержня задаётся графически. Кладём неподвижную точку, кладём материальную точку. Выбираем инструмент «стержень» и последовательно кликаем на обе точки. Между ними появляется стержень. При этом если первой была выбрана неподвижная точка, второй можно выбрать только свободную материальную, т.е. на клики по неподвижным точкам редактор не реагирует. И наоборот. Аналогично строится пружина.
Если удаляем точку, то автоматически удаляются стержень (если был) и пружины, с ней связанные.
Таким образом, нельзя создать некорректную сцену.