目标C - 3个CG点之间的角度

时间:2017-03-23 22:03:35

标签: objective-c

我有3个CGPoints A,B和C.我想找到AB和BC之间的角度。我正在尝试开发一个滑动键盘,每当我的滑动路径改变角度时我想得到分数

1 个答案:

答案 0 :(得分:1)

我们需要代表AB和BC的向量。然后我们可以使用标准公式计算角度,该公式将该角度的cos与点积相关联除以幅度的乘积...

float angleBetween(CGPoint v, CGPoint a, CGPoint b) {
    CGVector vA = vectorFromTo(v, a);
    CGVector vB = vectorFromTo(v, b);
    return acosf(dot(vA, vB) / (magnitude(vA) * magnitude(vB)));
}

以下是如何从一对点制作矢量...

CGVector vectorFromTo(CGPoint from, CGPoint to) {
    return CGVectorMake(to.x-from.x, to.y-from.y);
}

这是如何点缀产品两个向量...

float dot(CGVector a, CGVector b) {
    return a.dx*b.dx + a.dy*b.dy;
}

以下是如何计算幅度......

float magnitude(CGVector v) {
    return sqrtf(v.dx*v.dx + v.dy*v.dy);
}