web-dev-qa-db-fra.com

Point d'approche le plus proche (CPA) Formule mathématique dans le radar du navire

Je cherchais récemment à la recherche de la formule mathématique de trouver le point d'approche le plus proche (CPA) entre un navire et un autre navire. Je dois appliquer la formule de mon programme de navires radar et je ne trouve pas la bonne façon de le calculer.

Est-ce que quelqu'un sait quelle est la bonne formule (ou pseudo-code) au lieu de la traquer manuellement?

2
Syamilsynz

Excusez toutes les erreurs de mathématiques qui pourraient apparaître ci-dessous, mais l'approche de base est valide.

Vous pouvez représenter vos coordonnées de navires en utilisant des équations paramétriques.

Pxy(t) = (x(t),y(t))

Ce qui signifie que l'emplacement X du navire est représenté en fonction du temps et de l'emplacement en Y indépendamment est représenté en fonction du temps.

Par example,

Xa(t) = t; Ya(t) = 2t + 5 représenterait une ligne droite avec des coordonnées (0, 5) à T = 0.

Xb(t) = t - 4; Yb(t) = t + 10 représenterait une ligne droite avec des coordonnées (-4, 10) à T = 0.

Vous branchez ensuite les deux navires d'équations paramétriques dans la formule de distance pour calculer la distance les unes des autres à l'heure = t.

D = sqrt((Xa(t) - Xb(t))2 + ((Ya(t) - Yb(t))2)

En utilisant les exemples ci-dessus

D = sqrt((t - (t -4))2 + ((2t + 5) - (t + 10))2)

D = sqrt(16 + t2 -10t + 25) = sqrt(t2 - 10t + 41)

Puis résolvez l'équation de son minimum (T = 5)

Branchez la valeur pour T dans la formule de distance et vous avez la distance minimale et l'heure entre les 2 navires.

La chose cool à propos de cette méthode est que vos navires n'ont pas à voyager en lignes droites (comme l'exemple ci-dessus), tant que leurs positions peuvent être représentées par une fonction. Bien sûr, plus le chemin est plus complexe, plus il est difficile de résoudre le minimum.

En outre, cette approche se traduit par un nombre de dimensions que vous souhaitez travailler, pas seulement 2-D.

De plus, il montre l'une des nombreuses utilisations pour cette classe de calcul que tout le monde pense était inutile pour la science informatique.

Si vous limitez les mouvements de navires aux lignes droites, cela devrait être relativement simple vers l'avant de la mise en œuvre et fonctionnera assez rapidement. Je ne pense pas qu'il y ait un moyen plus rapide et plus précis de le faire.

Une autre bonne chose à utiliser cette méthode est qu'il est déterministe dans combien de temps il faudra pour exécuter. Les autres suggestions d'incrément d'incrément et de voir ce que vous obtenez pourraient prendre un très grand nombre d'incréments pour donner une réponse. Vous ne saurez pas combien de temps il faut jusqu'à ce que vous l'exécutions pour chaque situation.

2
Dunk