2010-11-25 24 views
0

J'ai un problème de programmation, dans le contexte d'une reconnaissance de forme géométrique (Rectangles, ovales, etc.). Dans ce contexte, si j'ai une ligne simple, de say (x1, y1) à (x2, y2) - constitué d'une série de points (xy paires) -Comment définir le DirectionVector d'une ligne?

Comment calculer le VECTOR de DIRECTION pour cette ligne? Je comprends le calcul, mais je trouve l'algorithme fourni par mon client un peu vague. Je suis bloqué à l'étape 3) de cet algorithme. Ce qui suit est l'algorithme (en anglais par opposition à psedocode), exactement comme fourni par mon client.

1) rompirent les points qui composent un « coup » ou « ligne » dans des ensembles de X (où par défaut X = 20 - nous ajusterons) points = un PointSet

2) Pour chaque PointSet, trouvez l'EndPouint (moyenne des points aux extrémités) pour le premier et le dernier Y points (où par défaut Y = X/5).

3) Trouvez la DirectionVector du PointSet = Soustraire les CentrePoints

4) Pour chaque paire de PointSets, trouver la AngleChange = l'angle entre les DirectionVectors des PointSets.

et ainsi de suite ....... J'essaie de comprendre ce que le point (3) signifie ...... Toute aide serait grandement apprécié les gens! Merci d'avance.

Répondre

0

Si le segment de (x1, y1) à (x2, y2) est courte, vous pouvez Approximative son vecteur de direction simplement par: (x2-x1) * i + (y2-y1) * j.

Sinon, vous pouvez utiliser PCA pour estimer le vecteur de direction que l'axe principal de points individuels formant le segment,

+0

Merci beaucoup! Je pense que je vais opter pour l'option a de votre réponse car les lignes sont divisées en petits segments avant d'être analysées pour différentes propriétés, y compris ce DirectionVector. – ImmortalBuddha

+0

Salut, pardonne-moi pour mon ignorance apparente .. mais qu'est-ce que "i" et "j" représentent dans votre équation ci-dessus: (x2-x1) ** i ** etc – ImmortalBuddha

+0

Vecteurs i et j (ou e_x et e_y) forment la base standard pour un espace euclidien 2D. http://en.wikipedia.org/wiki/Standard_basis – ssegvic