Хороший вопрос.
Сначала необходимо создать список следующих данных для каждого перетаскиваемого объекта:
- Позиция X
- Положение Y
- Высота
- Ширина
При определении объектов как перетаскиваемых вы можете привязать обратный вызов к событию «перетаскивания». Это событие срабатывает, если перетаскиваемый объект перемещается на 1 пиксель. Это означает, что этот обратный вызов будет называться много, поэтому важно сохранить вычисления минимальными.
При вызове обратного вызова вам будут предоставлены объекты пользовательского интерфейса и события. Объект пользовательского интерфейса будет содержать ценные данные о позициях X и Y на перетаскивании.
Имея размеры и положение перетаскивания и других перетаскиваемых объектов, вы можете легко вычислить близость к его братьям и действовать соответственно. Имея доступные данные, вы сможете реализовать математику Акеллехе.
Прежде чем я забуду, вы должны пересчитать список позиций в событии перетаскиваемой остановки.
Редактировать: проверьте следующую ссылку на draggable содержит документацию о перетаскиваемых событиях, методах и значениях.