Étant donné une "forme" dessinée par l'utilisateur, je voudrais la "normaliser" afin qu'ils aient tous une taille et une orientation similaires. Ce que nous avons est un ensemble de points. Je peux approximer la taille en utilisant une boîte ou un cercle de délimitation, mais l'orientation est un peu plus compliquée.Étant donné un ensemble de points, comment puis-je approcher l'axe principal de sa forme?
La bonne façon de le faire, je pense, est de calculer le majoraxis de son bounding ellipse. Pour ce faire, vous devez calculer le eigenvector du covariance matrix. Le faire sera probablement trop compliqué pour mon besoin, puisque je cherche une estimation assez bonne. Prélèvement min, max et 20 points aléatoires pourraient être un peu de démarrage. Y a-t-il un moyen facile d'approcher cela?
Modifier: J'ai trouvé Power method à environ itérativement vecteur propre. . Jusqu'à présent, j'apprécie David's answer.
Si cela calcule le vecteur propre de la matrice de covariance, il est génial. Y a-t-il un lien qui pointe vers cette méthode? –
Découvrez http://number-none.com/product/My%20Friend,%20the%20Covariance%20Body/index.html et l'exemple de code à http://www.gdmag.com/code.htm (sep02. zip) – Dave
J'ai trouvé une triche rapide pour le vecteur propre de la matrice 2x2: http://tinyurl.com/cd998p. Pour C = | E (x * x) E (x * y) || E (x * y) E (y * y) |, L1-d/c sort pour être (somme (x * x) - somme (y * y))/(2 * somme (x * y)) + sqrt (((somme (x * x) - somme (y * y))/(2 * somme (x * y)))^2 + 1), qui est exactement b + sqrt (b^2 + 1). –