#P3793. Joe’s Triangular Gardens

    ID: 2793 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>计算几何数论Greater New York Regional 2008

Joe’s Triangular Gardens

题目描述

乔的景观设计公司专门为那些刚让公司上市的计算机极客设计花园。他的标志性设计之一是一个圆形泳池,周围是等边三角形的瓷砖露台,泳池的边缘在三角形各边的中点处相切。
但有些客户不满意等边三角形的设计,希望泳池位于角落、斜坡旁或其他布局中。乔希望能提供任意三角形露台的设计,其中椭圆形泳池在每条边的中点处与边相切。例如:
乔知道如何通过在地面上钉两个木桩(椭圆的焦点)、在木桩间系一根绳子,并在绳内用标记杆画出椭圆。现在,客户会确定三角形的顶点位置,乔需要根据顶点坐标计算木桩的位置(焦点)和绳子的长度(椭圆上任意一点到两焦点的距离之和)。

编写一个程序,输入三角形的三个顶点坐标 ((x_1, y_1))、((x_2, y_2))、((x_3, y_3)),计算内接于该三角形且在各边中点处相切的椭圆的两个焦点坐标和绳子长度。

输入

第一行包含一个整数 (N)((1 \leq N \leq 1000)),表示数据集数量。
每个数据集占一行,包含6个浮点数 (x_1\ y_1\ x_2\ y_2\ x_3\ y_3),表示三角形的三个顶点坐标。

输出

对每个数据集,输出一行,包含以下内容:

  • 数据集编号(从1开始);
  • 五个浮点数,保留两位小数,依次为第一个焦点坐标 ((fx_1, fy_1))、第二个焦点坐标 ((fx_2, fy_2))、绳子长度 (rl)。
    焦点需按字典序排列(即 (fx_1 \leq fx_2),若 (fx_1 = fx_2),则 (fy_1 \leq fy_2))。
    若椭圆为圆形(两焦点重合),则两个焦点坐标相同(即圆心)。

输入示例 1

3 
100 100 200 273.2051 300 100 
100 100 100 300 300 100 
100 200 100 300 300 100

输出示例 1

1 200.00 157.71 200.00 157.76 115.47  
2 119.53 213.81 213.81 119.53 163.30  
3 103.94 253.14 229.40 146.86 170.51  

来源

Greater New York Regional 2008