![]() |
Geometría: posición relativa de un punto respecto a una línea.
Hola:
El problema que trato de resolver es el siguiente: Cita:
Muchas gracias de antemano. |
Si no entindo mal, dado tu punto P(Px, Py), lo que deberías saber es cual es el punto que corresponde a la recta que tiene la misma coordenada Y que el tuyo (pare eso sería perfecto saber la función que define la recta).
Si no tienes la función supongo que debes hacerlo por interpolación de los puntos existentes en la recta. Una vez que sepas el punto A(Ax, Ay) que corresponde a la recta y que su coordenada Y (Ay) es igual a la de tu punto (Py), basta con que compares las otras dos, Ax y Px para saber si queda a izquierda o derecha. |
No me queda claro el problema. Una recta se determina por sólo dos puntos, de manera que hablar de n puntos que determinen una recta suena raro.
Por otra parte, la derecha e izquierda de una recta son conceptos relativos a la dirección en la que recorres la recta, así que primero hay que establecer un vector de dirección de la recta. Si tienes dos puntos P0 y P1 de la recta, el vector P1 - P0 es el vector que va de P0 a P1. Necesitas un vector ortogonal a la recta que apunte hacia la izquierda de ésta, y este sería, si no me equivoco, Q=(-(y1-y0), x1-x0), suponiendo que P0=(x0,y0) y P1=(x1,y1). Ya con esto, y nuevamente si no me equivoco porque la geometría analítica la tengo totalmente oxidada, dado un punto P=(x,y), para determinar si está a la izquierda o derecha de la recta dirigida, debes tomar su producto escalar (trasladando al origen) con el vector ortogonal: (P-P0)*Q El valor de este producto es 0 si el punto está sobre la recta >0 si el punto está a la izquierda de la recta <0 si el punto está a la derecha de la recta // Saludos |
Creo que no he expresado bien el problema.
|
Por si pudiera interesar, la solucion que he implementado es la siguiente:
Siendo: .- True -> Dentro / Detrás / Derecha .- False -> Fuera / Delante / Izquiera
Por último para usarlas:
|
| La franja horaria es GMT +2. Ahora son las 15:14:54. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi