#P1269. Intersecting Lines

    ID: 270 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>计算几何模拟难度普及+/提高Mid-Atlantic 1996

Intersecting Lines

描述

我们都知道,在平面上,一对不同的点可以确定一条直线,并且平面上的两条直线会以以下三种方式之一相交:

  1. 不相交,因为它们是平行的;
  2. 相交于一条直线,因为它们相互重合(也就是说,它们是同一条直线);
  3. 相交于一个点。

在这个问题中,你需要运用你的代数知识来创建一个程序,该程序能够确定两条直线是如何相交的,以及相交的位置。

你的程序需要反复读取用于定义平面 xyx - y 上两条直线的四个点,并确定这些直线是如何相交的以及相交的位置。在这个问题中所用到的所有数字都是合理的,大致范围在 -1000 到 1000 之间。

输入

第一行包含一个整数 NN1N101 \leq N \leq 10NN 描述了所表示的直线对的数量。

接下来的 NN 行中,每行都将包含八个整数。这些整数按照 x1y1x2y2x3y3x4y4x_1y_1x_2y_2x_3y_3x_4y_4 的顺序表示平面上四个点的坐标。

因此,这些输入行中的每一行都表示平面上的两条直线:一条是经过点 (x1,y1)(x_1, y_1) 和点 (x2,y2)(x_2, y_2) 的直线,另一条是经过点 (x3,y3)(x_3, y_3) 和点 (x4,y4)(x_4, y_4) 的直线。点 (x1,y1)(x_1, y_1) 总是与点 (x2,y2)(x_2, y_2) 不同。同样地,点 (x3,y3)(x_3, y_3) 和点 (x4,y4)(x_4, y_4) 也总是不同的。

输出

输出应该有 N+2N + 2 行。

第一行输出应该是:INTERSECTING LINES OUTPUT

然后,对于由输入行所表示的每一对平面直线,都有一行输出,用于描述这些直线的相交情况:none(不相交)、line(重合) 或 point(相交于一点)。

如果相交于一点,那么你的程序应该输出该点的 xxyy 坐标,精确到小数点后两位。

最后一行输出应该是:END OF OUTPUT

输入数据 1

5
0 0 4 4 0 4 4 0
5 0 7 6 1 0 2 3
5 0 7 6 3 -6 4 -3
2 0 2 27 1 5 18 5
0 3 4 0 1 2 2 5

输出数据 1

INTERSECTING LINES OUTPUT
POINT 2.00 2.00
NONE
LINE
POINT 2.00 5.00
POINT 1.07 2.20
END OF OUTPUT

来源

1996 年大西洋中部地区