计算两点距离、点间角度、线间角度

#define kRadians(RADIAN) (180.0 * RADIAN / M_PI)

//.h

//点间间距

+ (CGFloat)distanceFromPoint:(CGPoint)starPoint to:(CGPoint)endPoint;

//点间夹角

+ (CGFloat)angleFromPoint:(CGPoint)starPoint to:(CGPoint)endPoint;

//线间夹角

+ (CGFloat)angleBetweenLinesFrom:(CGPoint)firstLineStarPoint endPoint:(CGPoint)firstLineEndPoint to:(CGPoint)secondLineStarPoint endPoint:(CGPoint)secondLineEndPoint;

//.m

+ (CGFloat)distanceFromPoint:(CGPoint)starPoint to:(CGPoint)endPoint {

CGFloat deltaX = endPoint.x - starPoint.x;

CGFloat deltaY = endPoint.y - starPoint.y;

return sqrt(deltaX*deltaX + deltaY*deltaY );

}

+ (CGFloat)angleFromPoint:(CGPoint)starPoint to:(CGPoint)endPoint {

CGFloat height = endPoint.y - starPoint.y;

CGFloat width = starPoint.x - endPoint.x;

CGFloat rads = atan(height/width);

return kRadians(rads);

}

+ (CGFloat)angleBetweenLinesFrom:(CGPoint)firstLineStarPoint endPoint:(CGPoint)firstLineEndPoint to:(CGPoint)secondLineStarPoint endPoint:(CGPoint)secondLineEndPoint {

CGFloat a = firstLineEndPoint.x - firstLineStarPoint.x;

CGFloat b = firstLineEndPoint.y - firstLineStarPoint.y;

CGFloat c = secondLineEndPoint.x - secondLineStarPoint.x;

CGFloat d = secondLineEndPoint.y - secondLineStarPoint.y;

CGFloat rads = acos(((a*c) + (b*d)) / ((sqrt(a*a + b*b)) * (sqrt(c*c + d*d))));

return kRadians(rads);

}

谢谢阅读!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容