Permettez-moi d'essayer de vous donner quelque chose entre la réponse de The Light Spark et la réponse d'Elliot, car d'après ce que j'ai lu, vous cherchez vraiment un algorithme à suivre et pas seulement des maths.
Énoncé du problème: Étant donné que vous avez un emplacement A (50, 50)et un en-tête (puisque vous n'en avez pas fourni un, je l'affirme y = 2 * x + 25), recherchez où B (80, 90)est relatif Aet l'en-tête.
Ce que vous voulez faire est en fait assez simple. 1) Relocalisez-vous Aà l'origine de votre système. Cela signifie simplement que les Avaleurs locales vont être les valeurs de position globale moins les valeurs de position globale de A. Adevient (0, 0)et Bdevient (30, 40).
1.1) La rubrique doit également être déplacée. C'est en fait très facile à faire, car l'ordonnée à l'origine en Atermes locaux est toujours 0, et la pente ne changera pas, nous avons donc y = 2 * xcomme en-tête.
2) Maintenant, nous devons aligner le cap précédent sur l'axe X. Alors, comment faisons-nous cela? La manière la plus simple, conceptuellement, de le faire est de convertir des coordonnées x, y en un système de coordonnées polaires. Le système de coordonnées polaires implique Rla distance à un emplacement et phiun angle de rotation par rapport à l'axe des x. Rest défini comme sqrt(x^2 + y^2)et phiest défini comme atan(y / x). De nos jours, la plupart des langages informatiques vont de l'avant et définissent une atan2(y, x)fonction qui fait exactement la même chose atan(y/x)mais le fait de telle sorte que la sortie a tendance à être de -180 degrés à 180 degrés plutôt que de 0 degrés à 360 degrés, mais les deux fonctionnent.
Bdevient ainsi R = sqrt(30^2 + 40^2) = sqrt(2500) = 50, et phi = atan2(40, 30) = 53.13en degrés.
De même, le titre change maintenant. C'est un peu compliqué à expliquer, mais parce que l'en-tête, par définition, passe toujours par notre origine A, nous n'avons pas à nous inquiéter du Rcomposant. Les titres seront toujours sous la forme de phi = Coù Cest une constante. Dans ce cas, phi = atan(2 * x / x) = atan(2) = 63.435degrés.
Maintenant, nous pouvons faire pivoter le système pour déplacer le cap vers l'axe X du Asystème local vers . Tout comme lorsque nous sommes passés Aà l'origine du système, tout ce que nous avons à faire est de soustraire phile titre de toutes les phivaleurs du système. Ainsi , le phide Bdevient 53.13 - 63.435 = -10.305degrés.
Enfin, nous devons reconvertir les coordonnées polaires en coordonnées x, y. La formule pour effectuer cette transformation est X = R * cos(phi)et Y = R * sin(phi). Par Bconséquent, nous obtenons X = 50 * cos(-10.305) = 49.2et Y = 50 * sin(-10.305) = 8.9, donc Ben local-à A-coordonnées est proche de (49,9).
J'espère que cela aide et est assez léger pour que vous puissiez suivre les calculs.