公切线
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

切线是计算几何中至关重要的一个定义。一条直线L是正方形S的切线,当且仅当以下两个条件成立:

1. 正方形S至少有一个点在直线L上。

2. 在直线L所划分的两个半平面(即两侧)中,有一个半平面不存在来自正方形S的点。

公切线则是多个图形共有的切线。在一般的几何题中,总会涉及到两个圆的公切线,但却对其它图形的公切线很少提及。本题给定了两个边长相同的正方形,保证两者交集的面积为0。请问两个正方形共有多少个公切线?

输入描述:

本题采用多组数据。

第一行输入一个整数T(1\le T \le 40),代表数据组数。

接下来T行,每行输入八个整数,x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4。所有坐标的范围为[-5 \times 10^3, 5 \times 10^3]。其中点(x_1,y_1)和点(x_2,y_2)是第一个正方形中一条对角线的两端点,点(x_3,y_3)和点(x_4,y_4)是第二个正方形中一条对角线的两端点。

数据保证两个正方形的边长相等,且两者交集的面积为0

输出描述:

对于每一组数据输出一行。如果两个正方形存在无数条公切线,输出“Infinity”(不带引号);否则输出公切线的数量。
示例1

输入

复制
2
0 0 2 2 1 2 3 4
0 0 10 0 8 2 16 8

输出

复制
3
3