Estoy trabajando con un juego y dibujando líneas en la pantalla. Tengo una línea dada por dos puntos A(x1, y1) y B(x2, y2). Quiero encontrar el nuevo punto C(x3,y3) que esté más cerca del punto A que del B.
Así, por ejemplo, si la longitud de la recta A,B es 20 (los valores conocidos), quiero encontrar el punto C tal que la longitud de la recta A,C sea 15.
Tengo este semi-funcionamiento en el juego hasta ahora sin embargo creo que me estoy tropezando con un detalle muy pequeño ya que funciona pero sólo si trazo la línea en ciertos cuadrantes (como 30,30 y 45,15). ¿Puede alguien indicarme dónde está el fallo? ¿Es que el sistema de coordenadas del juego es diferente del eje tradicional en matemáticas (0,0 es arriba a la izquierda e y aumenta desde arriba)?
Mis cálculos actuales son los siguientes:
c = current length of line
n = amount to subtract from current length
slope = (y2-y1)/(x2-x1)
t = arctan(slope)
x3 = x1 + ((c-n) * cos(t))
y3 = m * (x - x1) + y1
A continuación, trazo la línea
x, y, x3, y3
Donde x,y es mi punto de partida original para la línea (sin cambios).