Énoncé

Étant donné un polygone dans le plan, vous devez dire s'il est étoilé ou non. Un polygone est dit étoilé s'il existe un point du plan P tel que pour tout autre point du polygone Q, le segment [P;Q] est dans le polygone. En particulier, un polygone convexe est toujours étoilé (tout point P du polygone convient).
Par exemple, un triangle est toujours étoilé puisqu'il est convexe. Tout quadrilatère est également étoilé, même s'il n'est pas forcément convexe. La figure suivante contient un polygone qui n'est pas étoilé.
Si vous avez besoin à un moment dans votre algorithme de vérifier si un point est à l'intérieur d'un polygone, réfléchissez au nombre d'intersections avec des arêtes du polygone qu'aurait une demi-droite partant du point considéré.
polygone non étoilé

Entrée

L'entrée du programme contient une liste de coordonnées sous la forme suivante:
xa ya xb yb xc yc
Cette liste de coordonnées correspond aux points A, B, C... rencontrés en décrivant le périmètre du polygone considéré. Attention, le premier point n'est pas répété à la fin par soucis d'économie.
Pour plus de simplicité, le polygone est considéré comme étant simple, c'est à dire que l'intersection de deux de ses arêtes est toujours vide (elles ne se croisent donc pas). Attention aux problèmes de précision, nous vous conseillons d'être prudent avec les éventuels arrondis. Les tests pour cet exercice ne sont pas là pour vous pièger sur ces aspects donc profitez-en pour assurer un peu les calculs (en particulier en cas d'égalité : on dira par exemple que a = b si b - 0.001 < a < b + 0.001).
Enfin, toujours pour plus de simplicité, les arêtes orientées A->B, B->C etc sont telles que l'intérieur du polygone est toujours du côté des angles indirects par rapport à cette arête (0 0 1 0 1 1 0 1 n'est pas une description valide de polygone).

Sortie

La sortie de votre programme devra contenir soit "true" soit "false" selon que le polygone décrit par l'entrée est étoilé ou non. La réponse sera suivie d'un retour à la ligne.

Exemples

EntréeSortie

Squelette CamlLight

Squelette OCaml