Sss网站:处理-余弦规则(sss)-NaN

关于Sss网站的问题,在law of cosines sss中经常遇到, 我正在使用 Processing 开发一个简单的逆运动学 delta 机器人控制器。我被困在余弦规则。我有三个边的长度,希望得到角度。但float angle = acos((sq(humerus)+sq(ulna)-sq(radius))/(2 * humerus * ulna));总是返回 NaN。有什么想法吗?

我正在使用 Processing 开发一个简单的逆运动学 delta 机器人控制器。我被困在余弦规则。我有三个边的长度,希望得到角度。但float angle = acos((sq(humerus)+sq(ulna) - sq(radius))/(2 * humerus * ulna));总是返回 NaN。有什么想法吗?

2

如果你知道两边,你可能想使用余弦定律:

enter image description here

在 Java 术语中,为了求解角度C(与长度c的边相对),我们将有

Math.acos((a*a + b*b - c*c) / (2*a*b))

有几个原因,你可以得到NaN

你的一个边长是负的,所以当你的平方根,你收到NaN

根据您指定的边长,您的三角形不能真正存在。查看此文档acos

如果参数为NaN或其绝对值大于1,则结果为NaN

1

如果您检查 javadocMath.acos,您会看到以下内容:

If the argument is NaN or its absolute value is greater than 1, then the result is NaN.

所以,有两种可能性:

分子的绝对值大于分母,导致分数超过 1.0。因此,反余弦将返回 NaN。

其中一个平方根是返回一个 NaN。正如我们从javadocIf the argument is NaN or less than zero, then the result is NaN.

所以,我会检查你的肱骨,桡骨和尺骨的值。你可能允许一个稍微太大的分子(例如,通过浮点误差),或者你有一个向量而不是一个标量值用于你的臂骨测量(导致平方根的负数而不是正数)。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(611)
贾正cp:有人帮我做贾斯帕报告吗(jaspersoft help)
上一篇
Https服务器:服务器上的 https检查(digicert sha2 secure server ca)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(74条)