python: Aide à implémenter un algorithme pour trouver le minimum-area-rectangle pour des points donnés afin de calculer la longueur de l'axe majeur et mineur

J'ai un ensemble de points (points noirs en coordonnées géographiques de la valeur) provenant de l'enveloppe convexe (en bleu) d'un polygone (rouge). voir la Figure:python: Aide à implémenter un algorithme pour trouver le minimum-area-rectangle pour des points donnés afin de calculer la longueur de l'axe majeur et mineur

[(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)]

J'ai besoin de calculer la majeures et mineures de l'axe de la longueur des étapes suivantes (forme ce post écrire dans la R-projet et dans Java) ou à la suite de la cet exemple de procédure

python: Aide à implémenter un algorithme pour trouver le minimum-area-rectangle pour des points donnés afin de calculer la longueur de l'axe majeur et mineur

  1. Calculer l'enveloppe convexe d'un nuage.
  2. Pour chaque bord de l'enveloppe convexe:
    2a. calculer le bord de l'orientation,
    2b. rotation de l'enveloppe convexe à l'aide de cette orientation afin de calculer facilement le rectangle de délimitation de la zone avec un min/max de x/y de la rotation de l'enveloppe convexe,
    2c. Magasin de l'orientation correspondant à la superficie minimale trouvé,
  3. Retourner le rectangle correspondant à la zone minimale trouvé.

Après ce que nous savons de la La l'angle Thêta (représenté l'orientation du rectangle de délimitation par rapport à l'axe des y de l'image). Le minimum et le maximum de un et b sur tous les points limites sont
trouvé:

  • un(xi,yi) = xi*cos Theta + yi sin Theta
  • b(xi,yi) = xi*sin Theta + yi cos Theta

Les valeurs (a_max - a_min) et (b_max - b_min) a défini la longueur et la largeur, respectivement,
le rectangle de délimitation pour une direction Thêta.

python: Aide à implémenter un algorithme pour trouver le minimum-area-rectangle pour des points donnés afin de calculer la longueur de l'axe majeur et mineur

source d'informationauteur Gianni Spear