Foros del Web » Programación para mayores de 30 ;) » C/C++ »

puntos y rectas

Estas en el tema de puntos y rectas en el foro de C/C++ en Foros del Web. Hola a tod@s, A partir de dos puntos defino una recta y obtengo su vector director. A partir de su vector director obtengo el vector ...
  #1 (permalink)  
Antiguo 26/07/2006, 10:17
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 28
Antigüedad: 20 años, 1 mes
Puntos: 0
puntos y rectas

Hola a tod@s,

A partir de dos puntos defino una recta y obtengo su vector director.
A partir de su vector director obtengo el vector ortogonal.
De esta forma puedo partir el espacio en seis zonas, la recta que pasa por los dos puntos y las lineas perpendiculares en cada punto, gracias al vector ortogonal y el punto.
Lo que necesito es para cualquier otro punto saber si está por encima o por debajo de una recta dada.
La recta la defino medinate la ecuacion parametrica:
x = x0 + uVx
y = y0 + uVy

donde x0, y0 son las coordenadas del punto y Vx,Vy es el vector director(ortogonal)
segun se varie la u tendremos todos los puntos de la recta

Alguna idea ?¿

Gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 27/07/2006, 16:56
 
Fecha de Ingreso: marzo-2006
Mensajes: 54
Antigüedad: 18 años, 8 meses
Puntos: 0
existe una forma muy sencilla de saber eso, necesitas solamente conocer las coordenadas de 2 puntos de la recta y las coordenadas del punto cuya situacion relativa estas analizando.
supongamos que:
P1 (X1,Y1)
y
P2 (X2,Y2)
son puntos de la recta y que:
P0 (X0 , Y0) es el punto del que queremos saber su posicion.

calculamos d = (Y2-Y1)*X0 + (X1-X2)*Y0 + (X2*Y1-Y2*X1)
si d=0 el punto pertenece a la recta
si d>0 el punto esta a la derecha del sentido de la recta
si d<0 el punto esta a la izquierda del sentido de la recta
el sentido de la recta esta dado por
P1------->P2

saludos;
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:53.