2010-11-25 16 views
5

Tengo 2 puntos P1 y P2. Necesito encontrar el P3, para queEncontrar el tercer punto

  • todos los puntos estén en la misma línea;
  • P3 debe estar a la distancia desde el dP2 (lejos de P1)

empecé un complicado sistema parecer apenas para resolver ...
alt text

PS.

Las respuestas vectoriales son geniales, pero utilizo C# y no sé cómo agregar vectores allí.

+0

http://math.stackexchange.com/- quizás encuentres mejores respuestas ;-) – Svisstack

+0

Tienes solo DOS puntos en un li directo ne que están a distancia ** d ** de ** P2 ** !! –

+0

@Svisstack: tal vez debería transferir esta pregunta allí, pero no sé cómo. – serhio

Respuesta

5
P3 = P2 + d * ±(P2 - P1)/|P2 - P1| 

EDIT:

Debido a que las compras es fácil:

mag = sqrt((P2x - P1x) ** 2 + (P2y - P1y) ** 2) 
P3x = P2x + d * (P2x - P1x)/mag 
P3y = P2y + d * (P2y - P1y)/mag 
+0

realmente olvidé la división vectorial ... y ¿por qué + -? – serhio

+0

ignacio, amigo, podría sugerir una respuesta no vectorial por favor ...: "(Debería reconocer que no soy matemático. – serhio

+0

Porque hay dos puntos colineales' d' lejos de 'P2': uno lejos de' P1 '(positivo), y uno hacia' P1' (negativo). –

2

He traducido el código de Objective C

float distanceFromPx2toP3 = 1300.0;  

float mag = sqrt(pow((px2.x - px1.x),2) + pow((px2.y - px1.y),2)); 
float P3x = px2.x + distanceFromPx2toP3 * (px2.x - px1.x)/mag; 
float P3y = px2.y + distanceFromPx2toP3 * (px2.y - px1.y)/mag; 

CGPoint P3 = CGPointMake(P3x, P3y); 
+0

¡Gracias! Eso funcionó para mí. (para otros buscadores, las palabras clave que estaba tratando de encontrar esta respuesta con: proyección de línea Bresenham al 3er punto) –

Cuestiones relacionadas