#P1225. STRICTLY INSCRIBED SIMILAR TRIANGLES

STRICTLY INSCRIBED SIMILAR TRIANGLES

本题没有可用的提交语言。

描述

两个三角形 ABC 和 XYZ 如果它们对应的边长成比例(或者等价地,它们的对应角相等),则称它们为相似三角形。如果我们说 ABC 和 XYZ 是有顺序的相似三角形,那么 A 对应 X,B 对应 Y,C 对应 Z。即:

|AB|/|XY| = |BC|/|YZ| = |AC|/|XZ|,

其中 |MN| 表示从 M 到 N 的线段的长度。

如果三角形 XYZ 的每个顶点都位于三角形 ABC 的不同边的内部(而不是位于顶点上),我们称 XYZ 为严格内切于 ABC。也就是说,XYZ 的任何一条边都不能与 ABC 的边重合。如果 XYZ 与 ABC 是有顺序的相似三角形,并且严格内切于 ABC,则称 XYZ 为 ABC 的严格内切相似三角形。

如果通过 X 和 Y 的直线与通过 A 和 B 的直线之间形成角度 θ,那么有四种可能的方向,以下图所示。X 和 Y 可以在线段的任一端,第三个顶点 Z 可以在直线的任一侧。在图中,通过 X 和 Y 的直线与通过 A 和 B 的直线形成 30 度的角度。

根据外部三角形 ABC 的形状和通过 X 和 Y 的直线与通过 A 和 B 的直线之间的角度 θ,可能会有 0、1、2、3 或 4 个严格内切相似三角形。

编写一个程序,输入三角形 ABC 的顶点和角度 θ,计算所有满足条件的严格内切相似三角形的顶点。

注意

使用值 3.14159253 作为 π 的近似值,如果需要使用它。

输入

输入的第一行是一个正整数 n,表示后续有 n 个三角形数据集。每个三角形数据集由四行组成。第一行包含顶点 A 的 x 和 y 坐标,第二行包含顶点 B 的 x 和 y 坐标,第三行包含顶点 C 的 x 和 y 坐标。最后一行是角度 θ,表示通过 X 和 Y 的直线与通过 A 和 B 的直线之间的角度,以度为单位。

输出

对于每个数据集,首先输出符合输入条件的严格内切相似三角形的数量。然后,对于每个这样的三角形,输出一个空行,接着输出一行包含顶点 X(对应于 A)坐标的内容;接着输出一行包含顶点 Y(对应于 B)坐标的内容;再输出一行包含顶点 Z(对应于 C)坐标的内容;最后再输出一个空行。每个坐标应保留四位小数。

2
0 0
21 0
14 6
30
0 0
21 0
14 6
50
2

15.6030 4.6260
7.5905 0.0000
8.9396 3.8313


8.1575 0.0000
15.8312 4.4304
12.0075 5.1461

1

10.0510 0.0000
14.6315 5.4587
11.5450 4.9479

来源

Greater New York 2002