2013-01-25 3 views
4

У меня есть набор, например. 8 баллов. Я знаю все расстояния между точками. Существует ли алгоритм восстановления трехмерных координат этих точек.Восстановить трехмерные точки от точечного интервала

+0

Сорта, проблема в том, что расстояния содержат только информацию об относительном положении. Вероятно, вы можете сделать трехмерную форму из этой информации, но ее ориентация и положение (в 3D-пространстве) не могут быть определены с расстояний. Не уверен, что это достаточно хорошо для того, что вы ищете. – Nuclearman

+0

Да, знаю. Моя цель - получить трехмерную форму. Любые алгоритмы? – Mario

ответ

2

Предположим, что точки находятся в общем положении. То, что 3 точки не находятся на одной линии, а 4 точки находятся на одной плоскости. Это не ограничение, просто сделать алгоритм проще без проверок для особых случаев.

Пересечение, если существует, из четырех сфер (в общем положении) является одной точкой. Это видно из того, что пересечение двух сфер - это круг, пересечение трех сфер - 2 точки, а если центр четвертой сферы не находится на плоскости с центрами других трех сфер, эта сфера может проходить только через одну из точек пересечения ,

Таким образом, если расстояния действительны, то форма может быть создана путем добавления дополнительных точек к ней.

Позиция на первых 4 точках определяет ориентацию. Например. первая точка установлена ​​в начале координат, вторая точка установлена ​​на + X на заданном расстоянии до первого, третья точка, установленная в плоскости XY в направлении + Y на пересечении кругов, и четвертая точка, установленная в + Z на пересечении 3 сфер.

Дополнительные точки могут быть расположены путем пересечения 4 сфер с центрами в первых 4 точках и радиусами, заданными расстояниями до них.

4

Что вы пытаетесь сделать, называется Trilateration. Возможно, было бы разумно провести небольшое исследование, прежде чем вы начнете, так как это сложно сделать правильно. Тем не менее, я начну с следующего.

Следующие должны работать, если у вас есть фактические 3D-расстояния. Проблемы могут возникнуть, если вы этого не сделаете.

  1. Возьмите точку, p1 и назначьте ее источником, (0,0,0).
  2. Возьмите другую точку, p2 и поместите ее на (расстояние (p1, p2), 0,0)
  3. Возьмите другую точку, p3 и поместите ее на плоскость (x, y, 0) на основе ее расстояние от p1 и p2.
  4. Возьмите еще один пункт, p4 и поместите его в 3D-пространство, основываясь на его расстоянии от p1, p2, p3.
  5. Повторите шаг 4 до тех пор, пока точки не останутся.

Первые 3 шага достаточно, чтобы сориентировать и исправить координаты.

Решение шагов 3 и 4 может быть выполнено с использованием плоских треугольников, которые легко формируются из-за того, как точки центрированы.

+0

Спасибо, Trilateration было ключевое слово, которое я искал! – Mario

+1

Спасибо, хорошее ключевое слово для запоминания. – Ante

+0

Действительно, Анте, я знал, как это можно сделать в основном, но этот термин для меня тоже новый, нашел его при изучении триангуляции. Который, заданы углы, вычисляют расстояния. В основном, что нужно сделать, но наоборот. – Nuclearman

Смежные вопросы