#ddcc2019finalc. [ddcc2019_final_c]光の反射 (Reflection of Light)

[ddcc2019_final_c]光の反射 (Reflection of Light)

问题描述

在二维平面上,有一个以原点 (0,0)(0, 0) 为中心,半径为 11 的圆形房间。
在房间内有一个以点 (X,Y)(X, Y) 为中心,半径为 RR 的圆柱。

DISCO君在房间的内部,柱子的外部放置了光源点 (SX,SY)(S_X, S_Y)
从这个点出发,光线向所有方向直线传播。
光线在碰到房间的外墙或柱子时不会被反射,而是被吸收掉。

他想知道,在房间的外墙上有多少比例的区域可以用少于等于给定次数的镜子把光传递过去。
请回答对于 t=0,1,2,...,Kt = 0, 1, 2, ..., K 的每个情况下的问题:

  • 如果假设可以通过使用镜子来改变光线的方向最多 tt 次,请计算可到达房间外墙上的所有点所占比例。
    换句话说,计算房间外墙上被涂成白色的部分长度与总周长之比,即 l/2πl / 2π

约束条件

  • X,Y,SX,SY<1|X|, |Y|, |S_X|, |S_Y| < 1
  • 0.01R<10.01 \leq R < 1
  • 1K101 \leq K \leq 10
  • 柱子在房间内部,柱子到房间外墙的距离至少为 0.050.05
  • 光源在房间内部,光源到房间外墙的距离至少为 0.010.01
  • 光源在柱子的外部,光源到柱子的距离至少为 0.010.01
  • X,Y,R,SX,SYX, Y, R, S_X, S_Y 的值最多保留 7 位小数
  • KK 是整数

输入

输入以以下格式从标准输入中给出。

XX YY RR SXS_X SYS_Y KK

输出

输出共 K+1K + 1 行。第 ii 行 (1iK+11 \leq i \leq K + 1) 输出对于 t=i1t = i - 1 的问题的答案。
对于所有问题,如果输出与评测结果的绝对误差小于等于 10410^{-4},则被视为正确。

示例 1

输入
0.0 0.0 0.6
0.0 0.7
2

输出
0.467404563822388
1
1

t=0t = 0 时,可达到房间外墙上的区域是连接点 (0.99476...,0.10222...)(0.99476..., 0.10222...)(0.99476...,0.10222...)(-0.99476..., 0.10222...) 的弧长 2.93678...2.93678...,该弧长占据了整个外墙的比例为 2.93678.../2π=0.46740...2.93678... / 2π = 0.46740...

t=1t = 1 时,通过适当改变光线的方向,可以使得光线到达 t=0t = 0 时无法到达的所有点。

示例 2

输入
0.3 0.3 0.4
0.9 0.0
1

输出
0.623158068351223
1

示例 3

输入
0.00 0.00 0.90
0.65 0.65
3

输出
0.208804270061789
0.495936856319201
0.783069442576613
1

示例 4

输入
-0.2018 -0.1190 0.6858
-0.5000 -0.7777
3

输出
0.266193331431572
0.767297626518897
1
1