在我的应用程序中,用户点击 3 次,点击的 3 个点将创建一个角度。它完美地绘制了角度。我试图计算第二次点击时的角度,但我认为我做错了(可能是数学错误)。我还没有在微积分课上讨论这个问题,所以我将使用维基百科上的公式。
http://en.wikipedia.org/wiki/Law_of_cosines
这是我正在尝试的:
注:第一、第二、第三分别是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))));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)