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 A
et 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 A
valeurs locales vont être les valeurs de position globale moins les valeurs de position globale de A
. A
devient (0, 0)
et B
devient (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 A
termes locaux est toujours 0, et la pente ne changera pas, nous avons donc y = 2 * x
comme 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 R
la distance à un emplacement et phi
un angle de rotation par rapport à l'axe des x. R
est défini comme sqrt(x^2 + y^2)
et phi
est 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.
B
devient ainsi R = sqrt(30^2 + 40^2) = sqrt(2500) = 50
, et phi = atan2(40, 30) = 53.13
en 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 R
composant. Les titres seront toujours sous la forme de phi = C
où C
est une constante. Dans ce cas, phi = atan(2 * x / x) = atan(2) = 63.435
degrés.
Maintenant, nous pouvons faire pivoter le système pour déplacer le cap vers l'axe X du A
systè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 phi
le titre de toutes les phi
valeurs du système. Ainsi , le phi
de B
devient 53.13 - 63.435 = -10.305
degré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 B
conséquent, nous obtenons X = 50 * cos(-10.305) = 49.2
et Y = 50 * sin(-10.305) = 8.9
, donc B
en 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.