1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| // isLeft(): teste si un point est à gauche|sur|à droite d'une ligne infinie.
// Input: 3 points a, b et c
// Return: >0 si c est à gauche de la ligne passant par a et b
// =0 si c est sur la ligne
// <0 si c est à droite
function isLeft(a, b, P) {
return ((b[0]-a[0])*(P[1]-a[1]) - (P[0]-a[0])*(b[1]-a[1]) );
}
// inTriangle(): Teste si un point est inclu au triangle
// Input: 4 points a, b, c et P
// Return: true si P est inclu au triangle a,b,c
// false si P est strictement exclu au triangle a,b,c
function inTriangle(a, b, c, P) {
return ((isLeft(a, b, P) >= 0) && (isLeft(b, c, P) >= 0) && (isLeft(c, a, P) >= 0)) ? true : false;
} |
Partager