Попробуйте метод триангуляции, что-то вроде этого;
Начните с выбора трех объектов с известными расстояниями между ними и создайте треугольник в произвольной сетке на основе длины сторон.
Для каждого дополнительного объекта, который не был размещен, найдите, по крайней мере, три других объекта, которые были размещены, до которых вы знаете расстояния, и используйте эти расстояния для размещения объекта, используя пересечение расстояния / расстояния (т.е. пересечение точка трех окружностей с центром вокруг неподвижных точек с радиусами расстояний)
Повторяйте до тех пор, пока все объекты не будут размещены или больше не будет размещено никаких объектов.
Для неразмещенных объектов вы можете начать другое подобное упражнение, а затем использовать любые доступные расстояния, чтобы связать отдельные кластеры. Для получения дополнительной информации обратитесь к сетям триангуляции и трилатерации.
Редактировать: Согласно приведенному ниже комментарию, где расстояния являются приблизительными и содержат элемент ошибки, вышеупомянутый подход может использоваться для установления предварительных координат для каждого объекта, и затем эти координаты могут быть скорректированы используя метод наименьших квадратов, такой как вариация координат Это также учитывало бы весовые расстояния на основе их величины по мере необходимости. Более подробное описание можно найти в книге Ghilani & Wolf по теме . Это очень сильно зависит от характера различий между вашими расстояниями и того, как вы хотели бы, чтобы ваши объекты были представлены в евклидовом пространстве на основе этих расстояний. Отношения должны быть смоделированы и применены как часть любого решения.