#javascript #node.js #algorithm #canvas #fabricjs
Вопрос:
Я ищу алгоритм, который принимает холст в качестве входных данных и заставляет все объекты на холсте (в настоящее время только прямоугольные изображения) тяготеть к центру холста, не сталкиваясь друг с другом. В настоящее время я разрабатываю такой алгоритм, но столкнулся с несколькими проблемами.
Это мой текущий алгоритм:
- Разложите все объекты на холсте до тех пор, пока объекты больше не столкнутся, т. е.
(obj1.isContainedWithinObject(obj) || obj1.intersectsWithObject(obj) || obj1.isContainedWithinObject(obj))
значение false для каждой пары объектов - Выберите по одному объекту за раз и заставьте этот объект двигаться к центру холста по одному пикселю за раз и остановитесь, как только будет обнаружено столкновение. Когда объект остановлен, проделайте то же самое со следующим объектом в цикле, пока в цикле не закончатся объекты.
Я только что приступил ко второму шагу этого алгоритма, но у меня такое чувство, что должен быть более простой способ.
Я прилагаю изображения результата моих попыток ниже:
До: