/// <summary> /// 根据速度计算旋转角速度。 /// 速度可以看成是以控制点为中心,半径为specialOffset的圆上的上两个点的距离。 /// 这样可以根据余弦定理可以求角 /// speed最好带入毫秒单位,否则Acos会出现NaN值 /// 准确的说,应该确保2 * this.specialOffset * this.specialOffset > speed * speed /// 以毫秒单位的speed不能超过圆的直径,否则构不成三角形 /// 也就是cos为[0, 1] /// </summary> /// <param name="speed"></param> /// <returns></returns> float CalcTurnSpeed(float speed) { //cos(A) = (b^b + c^c - a^a) / 2bc float cos = (2 * this.turnOffset * this.turnOffset - speed * speed) / (2 * this.turnOffset * this.turnOffset); float rad = Mathf.Acos(cos); return(turnSpeed = Math_F.RadianToAngle(rad)); }