Permítame intentar darle algo en algún punto entre la respuesta de The Light Spark y la respuesta de Elliot, porque por lo que leí, realmente está buscando un algoritmo a seguir y no solo matemáticas lanzadas a usted.
Declaración del problema: dado que tiene una ubicación A (50, 50)
y un encabezado (ya que no proporcionó uno, lo afirmaré como y = 2 * x + 25
), busque dónde B (80, 90)
está relativo A
y el encabezado.
Lo que quieres hacer es bastante sencillo. 1) Vuelva A
a ubicar el origen de su sistema. Esto simplemente significa que los A
valores locales a serán los valores de posición global menos los valores de posición global de A
. A
se vuelve (0, 0)
y se B
vuelve (30, 40)
.
1.1) El encabezado también necesita ser movido. Esto es realmente muy fácil de hacer, porque la intersección en y en A
términos locales siempre es 0, y la pendiente no cambiará, por lo que tenemos y = 2 * x
como encabezado.
2) Ahora necesitamos alinear el rumbo anterior al eje X. ¿Entonces como hacemos esto? La manera más fácil, conceptualmente de hacer esto es convertir de coordenadas x, y a un sistema de coordenadas polares. El sistema de coordenadas polares implica R
la distancia a una ubicación y phi
un ángulo de rotación desde el eje x. R
se define como sqrt(x^2 + y^2)
y phi
se define como atan(y / x)
. En la actualidad, la mayoría de los lenguajes de computadora definen una atan2(y, x)
función que hace exactamente lo mismo atan(y/x)
pero de tal manera que la salida tiende a ser de -180 grados a 180 grados en lugar de 0 grados a 360 grados, pero funciona.
B
así se convierte R = sqrt(30^2 + 40^2) = sqrt(2500) = 50
, y phi = atan2(40, 30) = 53.13
en grados.
Del mismo modo, el título ahora cambia. Esto es un poco complicado de explicar, pero debido a que el encabezado, por definición, siempre pasa por nuestro origen A
, no debemos preocuparnos por el R
componente. Los encabezados siempre tendrán la forma de phi = C
dónde C
es una constante. En este caso, phi = atan(2 * x / x) = atan(2) = 63.435
grados.
Ahora, podemos rotar el sistema para mover el rumbo al eje X del A
sistema local . Al igual que cuando nos mudamos A
al origen del sistema, todo lo que tenemos que hacer es restar phi
el encabezado de todos los phi
valores del sistema. Entonces el phi
de se B
convierte en 53.13 - 63.435 = -10.305
grados.
Finalmente, tenemos que volver a convertir las coordenadas polares en coordenadas x, y. La fórmula para hacer esa transformación son X = R * cos(phi)
y Y = R * sin(phi)
. Por lo B
tanto, obtenemos X = 50 * cos(-10.305) = 49.2
y Y = 50 * sin(-10.305) = 8.9
, por lo tanto, B
en las A
coordenadas locales está cerca (49,9)
.
Esperemos que eso ayude, y que sea lo suficientemente ligero en matemáticas para que pueda seguirlo.