tips

  1. 注意舍入方式(0.5 的舍入方向);防止输出-0.

  2. 几何题注意多测试不对称数据.

  3. 整数几何注意 xmult 和 dmult 是否会出界; 符点几何注意 eps 的使用.

  4. 避免使用斜率;注意除数是否会为 0.

  5. 公式一定要化简后再代入.

  6. 判断同一个 2*PI 域内两角度差应该是 abs(a1-a2)<beta||abs(a1-a2)>pi+pi-beta;

    相等应该是abs(a1-a2)<eps||abs(a1-a2)>pi+pi-eps;

  7. 需要的话尽量使用 atan2,注意:atan2(0,0)=0, atan2(1,0)=pi/2,atan2(-1,0)=-pi/2,atan2(0,1)=0,atan2(0,-1)=pi.

  8. cross product = |u|*|v|sin(a) dot product = |u||v|*cos(a)

  9. (P1-P0)x(P2-P0)结果的意义:

      正: <P0,P1>在<P0,P2>顺时针(0,pi)内
    
      负: <P0,P1>在<P0,P2>逆时针(0,pi)内
    
      0 : <P0,P1>,<P0,P2>共线,夹角为 0 或 pi 
    
  10. 误差限缺省使用 1e-8!

基本公式

1.三角形

半周长
$$
P = (a + b + c) / 2
$$
面积
$$
S = ah/2 = (absinC)/2 = sqrt((P-a)(P-b)(P-c))
$$
中线
$$
Ma = sqrt(2(b^2+c^2)-a^2)/2 = sqrt(b^2+c^2+2bcos(A))/2
$$
角平分线