2010-11-04 1 views
11

Если у меня есть произвольный набор точек, а затем тот же набор точек, повернутых в некоторой степени, кто-нибудь знает какие-либо алгоритмы для вычисления/оценки, где центр вращения ? Или область изучения, где эти алгоритмы необходимы? У меня возникли проблемы с поиском соответствующей информации.Поиск центра вращения для набора точек

Благодаря

+0

Земля _rotates_ на своей оси. Он всплывает вокруг Солнца. На что вы ссылаетесь? –

+0

Является ли соответствие между известными точками? – nav

+0

Этот вопрос выглядит не по теме, потому что речь идет о математике, а не программировании. – bmargulies

ответ

9

Допустим, у вас есть одна точка (х, у), что переехал (х 'у').

Тогда центр вращения должен лежать на прямой, перпендикулярной (x, y) - (x ', y') и пересекающей центр (x, y) - (x ', y') ,

Теперь возьмите другую точку (x2, y2), которая переместилась в (x'2, y'2). Это также приводит к линии, на которой должен находиться центр вращения.

Теперь возьмите эти две строки и вычислите пересечение. Там у вас есть центр вращения.


Обновление: Если у вас нет соответствующей информации о том, куда идти, ее не должно быть слишком сложно определить. Вот предложение от головы: Найдите центр масс «до» -точек. Закажите очки в соответствии с их расстоянием от этой точки. Теперь сделайте то же самое с «after» -points. Теперь порядок двух наборов должен совпадать. (Точка ближе к центру масс перед тем вращения, должна быть точка, ближайшая к центру масс после вращения.)

+0

Этот алгоритм хорош, когда он знает взаимосвязь между точками. в двух разных предметах. –

+0

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

+0

Кто сказал, что нет? И даже если у него нет этих отношений, ему нужно понять это, прежде чем решить всю проблему, и с точки зрения, которую он * понял, этот алгоритм ему поможет. – aioobe

1

Очень интересная проблема. Мои знания об этом немного устарели, но, насколько я помню, есть некоторые исследования в использовании анализа подграфов на этом; то есть, характеризуя подразделы множества точек расстояниями между точками и дисперсиями в нем, а затем сопоставляя эти анализы подграфов между до и после вращения.

Это, конечно, предполагает очень сложный набор точек с неравномерным распределением.

3

Было бы сумасшедшим переполнением для этого типа проблем, но я думаю, что функциональность generalized Hough transform для обнаружения объекта, по крайней мере, охватывает то, что вы хотите, хотя это не совсем для этой цели.

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

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

0

Вам необходимо найти подписи на вашем наборе данных, которая позволяет идентифицировать точки из первого набора (A) с помощью символов второго набора (B).

Простой способ заключается в следующем:

  • Для каждого элемента Е в А, найти два ближайших точек (N1, N2) и вычислить угол между N1, E, N2, что приводит к трем значениям: угол и расстояния от E до N1 и N2 (ang, d1, d2).

  • Найдите 3 точки в A с уникальными кортежами (ang, d1, d2).

  • Для каждого элемента в B вычислить также расстояние до двух ближайших соседей и угол. Найдите 3 точки, соответствующие выбранным из A.

  • Расчет вращения - это только вопрос геометрического анализа.

обновление: вам нужно 3 очка, чтобы определить вращение в 3D-пространстве. В 2D два будут делать.

Обновление 2: как прокомментировали другие сообщения, в A могут быть симметрии, которые остановили бы вас для поиска 3 уникальных триплетов для (ang, d1, d2). В этом случае для каждой из выбранных трех точек в A вам необходимо выполнить поиск по всем элементам в B, соответствующим их триплетам, до тех пор, пока некоторая комбинация не приведет к вращению, которое работает для всех элементов в A.

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

  • Нет связанных вопросов^_^