en qué lenguaje tienes que hacerlo? si es en java creo que la solución sería usar el método:
relativeCCW(double x, double y)
Es un método de la clase Line2D, y permite saber si un punto (x,y) está a un lado o a otro de la línea. O dicho de forma más concreta: nos dice en qué sentido tendría que pivotar una recta (sobre su punto de inicio) para apuntar hacia el nuevo punto.
Ejemplo de código:
Line2D linea = new Line2D.Double(4,1,5.5,4);
System.out.println(linea.relativeCCW(5, 2));
La primera instrucción crea una línea (con coordenadas de tipo double, para mayor precisión), cuyo origen es (4, 1) y su final es (5.5, 4). Es decir, los datos del primer ejemplo.
En la segunda instrucción imprimimos por pantalla el resultado de la operación que nos interesa:
¿el punto (5, 2) a qué lado de la línea queda? ¿hay que girar en un sentido o en otro?
El resultado por pantalla es:
1
Mientras que si ponemos, por ejemplo, el punto (3, 3) el resultado es:
-1
Así que podríamos decir que el primer punto está girando a la derecha, y el segundo girando a la izquierda.
¿es eso lo que necesitas?