重写了 rotate 和 rotateTo 的算法，保持 atan2 的取值区间