计算android中三个点之间的角度
我很难理解我的代码出了什么问题计算android中三个点之间的角度,android,math,angle,Android,Math,Angle,我很难理解我的代码出了什么问题 Point A = new Point((int)CENTER_X, (int)CENTER_Y); Point B = new Point((int)me.getX(), (int)me.getY()); Point C = new Point((int)CENTER_X, (int)B.y); double AB; double AC; double BC; AB = Math.sqrt(Math.pow(B.x - A.x, 2) + Math.pow(B.
Point A = new Point((int)CENTER_X, (int)CENTER_Y);
Point B = new Point((int)me.getX(), (int)me.getY());
Point C = new Point((int)CENTER_X, (int)B.y);
double AB;
double AC;
double BC;
AB = Math.sqrt(Math.pow(B.x - A.x, 2) + Math.pow(B.y - A.y, 2));
AC = Math.sqrt(Math.pow(C.x - A.x, 2) + Math.pow(C.y - A.y, 2));
BC = Math.sqrt(Math.pow(C.x - B.x, 2) + Math.pow(C.y - B.y, 2));
degre = (AB * AB - AC * AC - BC * BC) /( 2 * AC * AB);
degre = Math.acos(degre*(180/Math.PI));
我总是得到
degree=0
或NaN
。为什么会这样?您不知道何时进行弧度到度的转换,您需要计算比率,然后进行转换(以弧度为单位返回角度),然后转换为度,如下所示:
double float ratio = (AB * AB + AC * AC - BC * BC) /( 2 * AC * AB);
degre = Math.acos(ratio)*(180/Math.PI);
我知道这是一个老问题,但当我看这个问题时,它帮助了我,所以我分享了一个工作Kotlin示例,并明确显示了正在计算的角度,因为我发现这可能会引起混淆
如果你认为三点是三角形,那么你可以在这里用问答法讨论三角形的“内部”角,但是你需要小心,你要关注你想要的角度的正确方程。 我发现,在看这个时,您所指的确切角度可能会令人困惑,因此能够对照一些已知或工作示例检查代码非常有用,这些示例允许您可视化所需的角度
在撰写本文时,下面的链接指向一个优秀的在线工具,该工具允许您输入三角形中的三个点,并计算内角等。它还包括如何进行计算的解释,并插入示例值,这在调试代码时非常有用:三点之间的私人娱乐角度(a:CirclePoint,b:CirclePoint,c:CirclePoint):双{
varab:Double=Math.sqrt(Math.pow((a.x-b.x.toDouble(),2.0)+Math.pow((a.y-b.y.toDouble(),2.0))
var ac:Double=Math.sqrt(Math.pow((a.x-c.x.toDouble(),2.0)+Math.pow((a.y-c.y.toDouble(),2.0))
var bc:Double=Math.sqrt(Math.pow((b.x-c.x.toDouble(),2.0)+Math.pow((b.y-c.y.toDouble(),2.0))
var cosValue=(ab*ab+bc*bc-ac*ac)/(2*bc*ab)
val角度=acos(cosValue)*(180/Math.PI)
//用于帮助测试和调试的可选日志记录
日志d(标签“ab:+ab”)
日志d(标签“ac:+ac”)
Log.d(标签“bc:+bc”)
日志d(标记“a:+a.x+”,“+a.y”)
日志d(标签“b:+b.x+”,“+b.y”)
日志d(标记“c:+c.x+”,“+c.y”)
对数d(标签“角度:”+角度)
返回角
}
请注意,这不适用于边缘情况,如不相交线等。第一条线是血清。。。(AB*AB-AC*AC-BC*BC)/(2*AC*AB)我是否使用了错误的eq?我没有检查你的trig,但相信你正确使用了余弦规则。