【XCPC/ 计算几何】优雅的复数旋转 & 坐标变换方法

给定二维平面的区域是一条以原点为端点的射线和所有距离射线 \leqslant d 的点的集合。射线的初始方向向量给定,会以每个单位时间 1 弧度的顺序旋转。给定一个 n 个顶点的凸多边形,保证凸多边形目标距离原点 >d。求区间在时间 [0,t] 中区域与凸多边形有交的时间区间长度。

法向量:n=(A,B)\boldsymbol{n} = (A, B)
方向向量:u=(B,A)\boldsymbol{u}=(-B, A)
单位方向向量:u0=(B,A)n\boldsymbol{u}_{0} = \frac{(-B, A)}{||\boldsymbol{n}||}
平行分量(投影)t=Put = \boldsymbol{P} \cdot \boldsymbol{u}
垂直分量(距离)d=Pn+Cnd = \frac{|\boldsymbol{P} \cdot \boldsymbol{n} + C|}{||\boldsymbol{n}||}