以三个点A、B、C,计算ㄥABC为例,贴代码:
+ (CGFloat)getAnglesWithThreePoint:(CGPoint)pointA pointB:(CGPoint)pointB pointC:(CGPoint)pointC {
CGFloat x1 = pointA.x - pointB.x;
CGFloat y1 = pointA.y - pointB.y;
CGFloat x2 = pointC.x - pointB.x;
CGFloat y2 = pointC.y - pointB.y;
CGFloat x = x1 * x2 + y1 * y2;
CGFloat y = x1 * y2 - x2 * y1;
CGFloat angle = acos(x/sqrt(x*x+y*y));
return angle;
}
以所得角度最大为π,因工程中AB为竖直方向固定,需要得到顺时针角度,最大2π,故添加如下:
if (pointC.x < pointB.x) {
angle = M_PI*2 - angle;
}