atan2(y,x)在180°处有不连续点,在那里它顺时针转换到-180°.0°。 如何将数值范围映射到0°.360°? 这里是我的代码: CGSize deltaPoint = CGSizeMake(endPoint.x – startPoint.x, endPoint.y – startPoint.y); float swipeBearing = atan2f(deltaPoint.height, deltaPoint.width); 我正在计算给定startPoint和endPoint的滑动触摸事件的方向,都是XY点结构。 代码是为iPhone,但任何支持atan2f()的语言都可以。 感谢您的帮助,通用的解决scheme和代码。 更新 :我把erikkallen的答案变成了一个很好的长variables名,所以我从6个月后就可以理解它。 也许它会帮助其他iPhone noob。 float PointPairToBearingDegrees(CGPoint startingPoint, CGPoint endingPoint) { CGPoint originPoint = CGPointMake(endingPoint.x – startingPoint.x, endingPoint.y – startingPoint.y); // get origin point to origin by subtracting end from start float bearingRadians = atan2f(originPoint.y, originPoint.x); […]