2012-06-28 13 views
5

Tengo dos puntos al final de una línea.
Necesito obtener las coordenadas finales de una traducción de esta línea.
La traducción será una línea paralela que está a una distancia d de la línea original.
aquí es una imagen de lo que necesito:Función para traducir coordenadas finales de una línea

enter image description here

así que necesito una función que me puede pasar estos dos puntos y la distancia y obtener las dos nuevas coordenadas en los retornos.
He estado atascado en este problema por un tiempo. ¡Cualquier ayuda será apreciada!
¡Gracias!

+0

¿Qué dirección se proyectará la línea si 'distancia' es positiva? ¿negativo? – justderb

+0

Esta traducción es ambigua sin otra dirección. Hay un número infinito de líneas que son distancia 'd' lejos y paralelas a la línea. – cheeken

+2

Quiero que sea un segmento de línea de la misma longitud y paralelo al original. y si dibujara una línea entre los puntos antiguo y nuevo, debería formar una línea perpendicular con la línea original. No estoy seguro si eso está claro. Aunque quiero la línea que se ve en la imagen. –

Respuesta

3

Las nuevas coordenadas serán el vector resultante de

distancia d multiplicado por vector normalizado de qué dirección se está moviendo, añadidos a la punto vector original.

EDIT:

Teniendo en cuenta los dos puntos de la línea, usted tendrá que calcular la normal del vector que une estos puntos. Information on that is here..

Normalizar este vector, se multiplica por d, añadir a cada punto.

+0

¡Después de jugar con él por un rato lo descubrí! Muchas gracias. –

2

Calcula el vector (x2-x1, y2-y1). Este es un vector en la dirección de tu línea. Un vector normal viene dada entonces por

(-(y2-y1),-(x2-x1)) = (y1-y2,x1-x2). 

Divide este vector por su tamaño para obtener el vector unitario en la dirección que desea

A = (y1-y2,x1-x2)/|(y1-y2,x1-x2)| 

Ahora dada la distancia d su punto traducida será dada por

NewPoint = OldPoint + d * A 
Cuestiones relacionadas