Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算android中三个点之间的角度_Android_Math_Angle - Fatal编程技术网

计算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示例,并明确显示了正在计算的角度,因为我发现这可能会引起混淆

如果你认为三点是三角形,那么你可以在这里用问答法讨论三角形的“内部”角,但是你需要小心,你要关注你想要的角度的正确方程。 我发现,在看这个时,您所指的确切角度可能会令人困惑,因此能够对照一些已知或工作示例检查代码非常有用,这些示例允许您可视化所需的角度

在撰写本文时,下面的链接指向一个优秀的在线工具,该工具允许您输入三角形中的三个点,并计算内角等。它还包括如何进行计算的解释,并插入示例值,这在调试代码时非常有用:

下面是测试Kotlin代码,用于计算三角形中顶点“b”处的角度(不必等边):

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,但相信你正确使用了余弦规则。