Бильярд
Пусть G - выпуклый многоугольник, p - точка, лежащая строго вне многоугольника. Из точки p к G проведено две касательных. Давайте возьмем "правую" точку (относительно p) и предположим, что q - точка касания, а r - точка, симметричная p, где q - центр симметрии. Пусть r = T(p) и назовем T "биллиардным преобразованием".
Касательная pq из точки p к выпуклому многоугольнику G, где q - точка касания, называется правой, если для любой точки u ∈ G вращение против часовой стрелки от вектора pq к вектору pu совершается по углу в интервале [0, π).
Приведем пример, который поможет понять сущность преобразования T. Пусть G - треугольник с вершинами (0, 0), (2, 0), (1, 1), точка p имеет координаты (-1, -1). Тогда "правая" касательная пройдет через вершину (2, 0), поэтому T(p) = (5, 1). Аналогично T((3, 0)) = (-1, 2), T((3, 2)) = (-1, 0), T((3, 4)) = (-3, -4). В некоторых случаях "правая" касательная может касаться многоугольника не в вершине, а в стороне. Если этот случай имеет место, то T(p) неопределено. Например, для многоугольника G значения T((3, 3)), T((-1,0)), T((4, -2)) неопределены.
Рассмотрим последовательность S(p) = (p, T(p), T(T(p)), ...). В зависимости от поведения последовательности множество всех точек p вне многоугольника разобьется на классы:
Последовательность S(p) конечна (то есть T(v) неопределено для последнего значения v).
Последовательность S(p) бесконечна и периодична, возможно с некоторым предпериодом.
Последовательность S(p) бесконечна и не периодична.
В задаче "бильярдным столом", или фигурой G, является параллелограмм OABC, где O = (0, 0). Вам заданы координаты некоторого "стола" и точка строго вне его. Выясните тип последовательности. Если последовательность периодическая (типа 2), то найдите ее период.
Входные данные
Первая строка содержит количество тестов t (1 ≤ t ≤ 3 * 10^5
). Каждая из следующих t строк содержит шесть целых чисел x[A]
, y[A]
, x[C]
, y[C]
, x[p]
, y[p]
, не превышающих по модулю 10^9
: координаты точек A, C и p. Гарантируется, что параллелограмм OABC невырожденный, а точка p лежит вне многоугольника.
Выходные данные
Для каждого теста вывести в отдельной строке одно число:
-1, если последовательность конечна,
Длину периода, если последовательность периодична,
-3, если последовательность бесконечна и не периодична.