J'essaie de trouver le moyen le plus rapide et le plus simple dans un programme C# de calculer les intersections de deux cercles. D'après ce que je peux dire il y a deux méthodes possibles, et vous devrez me pardonner de ne pas connaître les noms officiels pour eux.Quelle est la méthode la plus efficace pour calculer les intersections de deux cercles?
Nous supposons que vous connaissez les points centraux des deux cercles et leurs rayons exacts, à partir desquels vous pouvez calculer la distance entre eux, tout ce qui manque est le (s) point (s) d'intersection. Ceci se déroule sur une parcelle x-y standard.
Le premier est un type de méthode de substitution telle que celle décrite here où l'on combine les deux formules de cercle et d'isoler soit x
ou y
, puis le sous-le dans une formule originale pour aboutir à une équation du second degré qui peut être résolu pour deux (ou éventuellement une ou aucune) coordonnées pour un axe, ce qui vous permet ensuite de trouver les coordonnées correspondantes sur l'autre axe. La seconde à laquelle j'ai vu une référence est l'utilisation d'une méthode de loi des cosinus pour déterminer les angles, ce qui permettrait ensuite de tracer une ligne pour chaque côté de la grille, et mettre dans votre rayon pour trouver le point d'intersection réel .
J'ai écrit les étapes pour la première méthode, et cela semble plutôt long. La seconde va prendre quelques recherches/apprendre à écrire mais semble plus simple. Ce que je n'ai jamais fait, c'est traduire des processus comme celui-ci en code, donc je ne sais pas finalement lequel sera le plus facile pour cette application. Quelqu'un a-t-il des conseils à ce sujet? Ou est-ce que je vais peut-être aller dans le mauvais sens? Y a-t-il déjà une bibliothèque que je peux utiliser pour réinventer la roue?
Quelque contexte: Je suis principalement préoccupé par le coût pour le CPU pour faire ces calculs. Je prévois sur l'application faire un bon nombre d'entre eux à la fois, à plusieurs reprises, d'où la raison pour laquelle je veux le moyen le plus simple pour l'accomplir.
Vous mettez dans un lien, je pense que vous avez oublié de mettre l'URL au fond. En outre, cela ressemble beaucoup plus à un problème mathématique qu'à un problème de C#. – gunr2171
Cette question semble être hors sujet car il s'agit de maths – DavidG
@DavidG: Non, il s'agit de programmation.Peut-être que c'est «trop large» ou quelque chose, mais ce n'est certainement pas hors sujet en raison du sujet. – tmyklebu