python: Помогите реализовать алгоритм, чтобы найти прямоугольник минимальной площади для заданных точек, чтобы вычислить длину большой и малой оси
У меня есть набор точек (черные точки в значении географических координат), полученных из выпуклой оболочки (синий) многоугольника (красный). см. рисунок:
[(560023.44957588764,6362057.3904932579),
(560023.44957588764,6362060.3904932579),
(560024.44957588764,6362063.3904932579),
(560026.94957588764,6362068.3904932579),
(560028.44957588764,6362069.8904932579),
(560034.94957588764,6362071.8904932579),
(560036.44957588764,6362071.8904932579),
(560037.44957588764,6362070.3904932579),
(560037.44957588764,6362064.8904932579),
(560036.44957588764,6362063.3904932579),
(560034.94957588764,6362061.3904932579),
(560026.94957588764,6362057.8904932579),
(560025.44957588764,6362057.3904932579),
(560023.44957588764,6362057.3904932579)]
Мне нужно рассчитать длину большой и малой оси, следуя этим шагам (сформируйте этусообщение написать в R-проект и вДжава) или послеэтот пример процедуры
Вычислить выпуклую оболочку облака.Для каждого края выпуклой оболочки: 2a. вычислить ориентацию края, 2b. поверните выпуклый корпус, используя эту ориентацию, чтобы легко вычислить площадь ограничивающего прямоугольника с минимумом / максимумом x / y повернутого выпуклого корпуса, 2с. Сохраните ориентацию, соответствующую найденной минимальной площади,Вернуть прямоугольник, соответствующий минимальной найденной площади.После этого мы знаемугол тета (представлена ориентация ограничивающего прямоугольника относительно оси Y изображения). Минимум и максимум и б по всем граничным точкам находятся:
a (xi, yi) = xi * cos Theta + yi sin Thetab (xi, yi) = xi * sin Theta + yi cos ThetaЗначения (a_max - a_min) и (b_max - b_min) определяют длину и ширину, соответственно, ограничительного прямоугольника для направления Theta.