2012-06-01 5 views
4

У меня есть два двумерных треугольника (то есть они оба лежат в плоскости) и хотели бы найти преобразование подобия (поворот + масштаб + перевод), который наиболее близко отображает один из них на другой ,Преобразование подобия между двумя треугольниками

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

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

Любая идея, как это сделать?

+0

Во-первых, вам нужно определить, что вы подразумеваете под термином «наиболее близко»? – mathematician1975

+1

Я думаю, http://math.stackexchange.com/ - это подходящее место, чтобы поднять этот вопрос. –

+0

«самым близким» Я имею в виду что-нибудь правдоподобное, когда преобразование одного треугольника делает его в значительной степени зарегистрированным на другом. Я открыт для предложений по разумным (и довольно простым для вычисления) значениям «наиболее близко» – kazimpal

ответ

2

Определение сходства - непростая задача, но вот несколько идей, с которыми вы можете играть. Допустим, вы хотите, чтобы преобразовать треугольник A (почти) треугольнику B

  • Масштаб: Масштаб треугольника А по площади (B)/площадь (A)
  • Преобразование: Преобразование треугольника А такой вектор, который делает оба треугольника centroids в матче.
  • Вращение: используйте метод оптимизации, чтобы выбрать значение в диапазоне [0, 360) для вращения, которое соответствует вашим личным критериям подобия.

Вращающаяся часть, вероятно, самая сложная. Простой, но эффективной идеей было бы применить hill climbing, начиная с трех очков и взяв лучшее. Три точки - это количество вращения, необходимое для установки одной из точек A в каждой из точек B.

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

+0

, в конце концов, я использую анализ прокруток, который аналогичен тому, что вы предложили но имеет замкнутое решение для нахождения оптимального вращения – kazimpal

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