Bonjour,
je suis sur un problème intéressant mais j'ai du mal à penser un algo pour le régler.
Je compare 2 nuages de points A et B en calculant la somme des distances euclidiennes des points pour obtenir un degré de différence (plus la somme est basse, plus les 2 nuages sont similaires).
(Pour rappel, un nuage de points 2D est simplement un ensemble de points de coordonnées x,y dans un repère orthonormé)
ex :
nuage A
point a (12, 8)
b(1, 3)
nuage B
point a (10, 8)
b(-10, 2)
Ce que j'appelle distance euclidienne est en fait la norme de la soustraction des vecteurs, ex : pour comparer A et B je fais la somme des vecteurs soustractions et j'en récupère la norme :
Somme = ||(Ba - Aa) + (Bb - Ab)||
(D'ailleurs est-ce c'est bien cela que l'on appelle distance euclidienne ?)
Le but est de redresser le nuage B en y appliquant des symétries sur l'ensemble de ses points pour qu'il soit le plus proche possible de A : symétries sur x, y et des axes arbitraires de 45° que j'appellerai xy et -xy, .
J'essaie de trouver un algo optimum pour cela mais je peine un peu.
Ma première idée est de générer toutes les situations possibles et de comparer tous les nuages états finaux (A vs B, A vs B', A vs B'', etc.). A priori il n'y en a pas beaucoup, sachant que 2 symétries s'annulent.
Pensez-vous que l'idée soit bonne ?
Sinon pensez-vous que l'arbre peut se construire au fur et à mesure et que la meilleure solution peut-être trouvée sans parcourir ou créer tout l'arbre (parcours en largeur) ? A priori je dirais que non car une position optimum semble pouvoir passer par une position très mauvaise, les symétries changeant les coordonnées des points de façon absolument radicale.
Toute piste ou suggestion est donc la bienvenue
Merci d'avance.
(J'essaie déjà de faire un algo pour des nuages 2D mais l'algo final gèrera les nuage 3D.)
Partager