在我的应用程序中,用户轻触三次,就会由被轻触的三个点创建一个角度。它可以完美地绘制出这个角度。我试图计算第二次轻触时的角度,但我认为我做错了(可能是数学错误)。我还没有在我的微积分课上涵盖到这个问题,所以我正在根据维基百科上的公式进行计算。
有时,它会给出角度为1,这对我来说没有意义。有人可以解释一下为什么会这样,或者如何修复它吗?
http://en.wikipedia.org/wiki/Law_of_cosines
我正在尝试的是:
注意:First、Second和Third是由用户点击创建的CGPoints
。
CGFloat xDistA = (second.x - third.x);
CGFloat yDistA = (second.y - third.y);
CGFloat a = sqrt((xDistA * xDistA) + (yDistA * yDistA));
CGFloat xDistB = (first.x - third.x);
CGFloat yDistB = (first.y - third.y);
CGFloat b = sqrt((xDistB * xDistB) + (yDistB * yDistB));
CGFloat xDistC = (second.x - first.x);
CGFloat yDistC = (second.y - first.y);
CGFloat c = sqrt((xDistC * xDistC) + (yDistC * yDistC));
CGFloat angle = acos(((a*a)+(b*b)-(c*c))/((2*(a)*(b))));
NSLog(@"FULL ANGLE IS: %f, ANGLE IS: %.2f",angle, angle);
有时,它会给出角度为1,这对我来说没有意义。有人可以解释一下为什么会这样,或者如何修复它吗?
CGFloat angle = acos(((a*a)+(c*c)-(b*b))/((2*(a)*(c))));
- Tyler