Допустим имеется два разных треугольника с общим центром и имеется задача повернуть один треугольник так, что бы его вершины лежали максимально близко к вершинам другого треугольника.
У меня есть идея только того, что чтобы найти новые координаты фигуры, нужно минимизировать расстояния между вершинами первого треугольника и второго (т.е. взять производную и приравнять нулю), однако как действовать дальше не знаю ..
Ответ
Будем пользоваться полярными координатами. Зададим 2 треугольника парами значений в полярных координатах:
Угол поворота второго треугольника относительно первого:
Так как у вас нет четкого условия про минимальное расстояние, возьмем сумму квадратов расстояний (визуально это должен быть наилучший вариант). Используя формулу для расстояния между 2 точками на полярных координатах получаем такие квадраты расстояний:
Мы должны найти минимум функции сумм этих 3 величин. В нас здесь много констант, что бы упростить формулу, положим:
И тогда наша сумма квадратов расстояний примет вид:
Возьмем производную, что бы найти экстремумы функции:
Если расписать синус разницы, то получим:
Положим:
И получим:
Такое уравнение легко решить, если взять такой угол , что:
Тогда уравнение примет вид:
Такое легко решить. Дальше нужно повторить все это, смещая точки второго треугольника: сначала сместить на 1 (первая точка станет второй, вторая третьей и т. д.), потом на 2.
Комментариев нет:
Отправить комментарий