Je travaille sur un sujet qui parait simple au départ mais sur lequel je bloque depuis un moment déjà. Je pars d'une liste de points 2D, désordonnées. Ces point sont réparties "approximativement" sur une grille dont je cherche les différents paramètres (on tolère une erreur de 10% autour de la position théorique) :
ex:
- Nb de point horizontal = 3* * * * * *
- nb de point vertical = 2
- pas moyen horizontal
- pas moyen vertical
Sachant que la grille de points peut-être placés dans n'importe quelle position : diagonal, Vertical ou horizontal.
Voici l'état des lieux :
1°) je cherche à me ramener dans une position "horizontal" pour simplifier l'analyse. Pour cela, il me faut une origine et une direction ensuite je peux faire un changement de repère. => premier hic, comment déterminer "simplement" l'axe horizontal ou vertical de ma matrice de points ?
Perso je suis arrivé à quelque chose en utilisant un algo "convex hull". Mais c'est très lourd et perfectible à mon avis.
2°) une fois changer de repère, j'ai donc quelque chose qui ressemble à ca :
(les points ne sont pas alignés exprès car il y a une certaine tolérance par rapport à la matrice théorique)* * * * * * * * * * * *
A partir de là, j'ai essayé de connaitre le pas moyen. En triant mes points dans l'ordre croissant selon l'axe X par exemple. Mais je me retrouve avec des "paquets de points" espacés les uns des autres. Je ne vois pas comment extraire le pas moyen.
3°) une fois le pas moyen trouvé, je suppose qu'on peut prendre la longueur max selon X et diviser par le pas moyen pour obtenir le nombre d'élément.
quelque chose comme :
Là aussi, selon les configuration, je peux me retrouver avec le bon nombre ou n+1 ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part nbX = (MaxX - MinX) / StepX +1
J'espère que vous avez déjà été confronté à ce genre de problème. J'ai cherché côté algorithme de trie mais je n'ai rien trouvé pour une matrice.
Partager