#P16866. [SGU446] Rotation Estimation

[SGU446] Rotation Estimation

题目描述

Nod 拍摄了同一个星座的两张照片。星座由 nn 颗星组成,两张照片中的星座形状完全相同,但整体位置和平面旋转角可能不同。

每张照片给出 nn 个点的坐标。两张照片中点的输入顺序没有对应关系。

你需要求出两张照片中星座方向的最小非负角度差,单位为弧度。

如果由于星座自身具有旋转对称性而存在多个合法答案,输出其中最小的一个。答案一定可以取在 [0,π][0,\pi] 内。

输入格式

第一行一个整数 nn

接下来 nn 行,每行两个实数 x1,i,y1,ix_{1,i},y_{1,i},表示第一张照片中的星星坐标。

再接下来 nn 行,每行两个实数 x2,i,y2,ix_{2,i},y_{2,i},表示第二张照片中的星星坐标。

保证:

  • 1n10001\le n\le1000
  • 所有坐标绝对值不超过 100100
  • 每张照片中任意两颗星之间的距离都大于 10510^{-5}
  • 两个点集确实表示同一个星座,只相差平移和旋转;
  • 点的输入顺序没有意义。

输出格式

输出一个非负实数,表示最小旋转角差,单位为弧度。

绝对误差不得超过 10710^{-7}

样例

3
0.0 0.0
1.0 1.0
0.0 1.0
3.0 3.0
2.0 2.0
3.0 2.0
3.14159265359