Question

ma question est peut-être un peu étrange. J'ai « développé » un algorithme et ne sais pas s'il y a un algorithme similaire déjà là-bas.

La situation: J'ai une piste définie par les points de piste (2D). Les points de piste représentent tour à tour par exemple. Entre les points de piste, il n'y a que des lignes droites. Maintenant, je me donne un ensemble de coordonnées dans cet espace 2D. Je calcule la distance entre le premier point de trace pour les nouvelles coordonnées et la distance de l'intervalle pour les deux premiers points de tracé. Si la distance des coordonnées mesurées est plus courte que la distance entre le premier et le deuxième point de la voie, je suppose que ce point se trouve entre cet intervalle. Je fais ensuite une interpolation linéaire sur ce point. Si elle est plus grande, je vais vérifier avec l'intervalle suivant.

Il prend essentiellement des distances d'intervalle et d'essayer de les adapter là-dedans. Je suis en train de suivre un objet en mouvement à peu près le long de cette piste.

Est-ce son familier à quelqu'un? Quelqu'un peut-il trouver une suggestion pour un algorithme similaire existant?

EDIT: D'après ce que je l'ai dit jusqu'à présent, je tiens à préciser qu'une position est associée multiplie pas à suivre points. Pensez à l'amende ASCII dessin Jonathan fait:

La position X se trouve être dans le segment 1 et 2 (S12). Maintenant, la position suivante est Y, qui ne doit pas être considéré comme assez proche d'être sur S12. Je vais passer à S23, et vérifier si elle est dans.

Si c'est dans, je ne consulterai S12 pour toute autre valeur, parce que je trouve un dans le segment suivant déjà. L'algorithme « ne regarde pas en arrière ».

Mais si elle ne trouve pas le segment de droite à partir de là, parce qu'il happenend être de loin du premier segment, mais encore loin de tout autre segment de toute façon, je vais laisser tomber la valeur et la position suivante sera être regardé pour le dos à S12, encore une fois.

La boucle reste un problème. Je reçois Y pense pour S23 et sauter deux ou trois positions (car ils sont trop loin), je pourrais être en train de perdre la piste. Je pouvais déterminer une position dans S34 où il serait déjà en S56.

Peut-être que je peux arriver à une vitesse moyenne de vage dire dans quel secteur il devrait être.

Il semble que plus les segments sont, plus la chance de prendre une bonne décision.

Était-ce utile?

La solution

Ce qui me préoccupe au sujet de l'algorithme que vous avez décrit est qu'il est « gourmand » et pourrait choisir le segment de piste « mauvais » (ou, au moins, un segment de piste qui est pas le plus proche du point).

Il est temps de pousser l'art ASCII aux limites. Considérons le chemin d'accès suivant (les nombres représentent la séquence dans la liste des points de suivi), et la coordonnée X (et, plus tard, Y).

    1-------------2
                  |
                  |    Y
                X |
            5-----+-----6
            |     |
            |     |
            4-----3

Comment sommes-nous censés interpréter votre description?

  

[C] alculez la distance entre le premier point de trace pour les nouvelles coordonnées et la distance de l'intervalle pour les deux premiers points de tracé. Si la distance des coordonnées mesurées est plus courte que la distance entre le premier et le deuxième point de la voie, [assumer] que ce point se trouve entre cet intervalle; [...] [s] i est plus grand, [...] vérifier avec l'intervalle suivant.

Je pense que la première phrase signifie:

  • Calculer la distance de TP1 (point de la voie 1) pour TP2 - appeler D12
  • .
  • Calculer la distance de TP1 à X (appelons-le D1X) et de TP2 à X (appelons-le D2X).

La partie la plus délicate est l'interprétation de la condamnation avec sursis.

Mon impression est que si l'une ou D1X D2X est inférieur à D12, alors X sera supposé être (ou le plus proche aussi) le segment de piste à TP1 TP2 (appeler le segment S12).

En regardant la position de X dans le diagramme, il est modérément clair que les deux D1X et D2X sont plus petits que D12, donc mon interprétation de votre algorithme interpréterait X comme étant associé à S12, mais X est nettement plus proche de S23 ou S56 que de S12 (mais ceux qui sont mis au rebut sans être considérés comme même).

Ai-je mal compris quelque chose au sujet de votre algorithme?

En pensant à un peu: ce que j'ai interprété votre algorithme pour dire que si le point X se trouve dans soit le cercle de D12 de rayon centré sur TP1 ou le cercle de D12 de rayon centré sur TP2, alors vous associez X avec S12. Cependant, si l'on considère également le point Y, l'algorithme je suggère que vous utilisez serait également l'associer à S12.

Si l'algorithme est raffiné dire MAX(D1Y, D2Y) < D12, il ne considère pas Y comme étant lié à S12. Cependant, X est probablement encore considéré comme lié à S12 plutôt que S23 ou S56.

scroll top