我正在處理一個簡單的反向運動學增量機器人控制器。我陷入了餘弦的規則。我有三面的長度,並希望獲得角度。但是float angle = acos((sq(humerus)+sq(ulna) - sq(radius))/(2 * humerus * ulna));
總是返回NaN。有任何想法嗎?處理 - 餘弦準則(sss) - NaN
4
A
回答
2
您可能需要使用的餘弦法律,如果你知道雙方:
在Java方面,對角度解決C
(相對於長邊c
)我們將有
Math.acos((a*a + b*b - c*c)/(2*a*b))
有幾個原因,你可能會得到NaN
:
- 你的一個邊長爲負,所以當你平方根它您將收到
NaN
。 - 根據您指定的邊長,您的三角形不能真正存在。看看這個文檔
acos
:如果參數爲
NaN
或它的絕對值大於1
,那麼結果是NaN
。
1
如果您檢查Math.acos的Javadoc,您會看到以下內容:
If the argument is NaN or its absolute value is greater than 1, then the result is NaN.
所以,有兩種可能性:
分子是大於分母絕對值,導致超過1.0的分數。因此反餘弦將返回NaN。
其中一個平方根返回NaN。當我們從javadoc看到:
If the argument is NaN or less than zero, then the result is NaN.
所以,我會檢查你的肱骨,橈骨和尺骨值。您可能允許分子稍微過大(例如,通過浮點錯誤),或者您的手臂骨骼測量值具有矢量而非標量值(導致平方根爲負值而不是正值)。
相關問題
- 1. 正弦和餘弦
- 2. 增加餘弦的準確性
- 3. C#正弦餘弦ZedGraph
- 4. Java正弦和餘弦
- 5. 計算正弦和餘弦
- 6. 繪製正弦/餘弦圖
- 7. tm.package:findAssocs對餘弦
- 8. 餘弦相似
- 9. 如何處理餘弦相似度的負值
- 10. 餘弦相似度的預處理要求是什麼?
- 11. 如何改善正弦/餘弦函數?
- 12. apache.commons.text餘弦距離
- 13. 餘弦距離Weka
- 14. 餘弦相似度
- 15. 約餘弦相似
- 16. 餘弦相似度
- 17. 用C++創建正弦/餘弦圖形
- 18. 正弦和餘弦錯誤在答案
- 19. 正弦和餘弦移動玩家
- 20. 在MATLAB繪圖與正弦和餘弦
- 21. C++正弦/餘弦計算器
- 22. 產生具有餘弦
- 23. 與gensim和餘弦相似
- 24. VHDL:餘弦查找表
- 25. 熊貓如何更換?與NaN - 處理非標準缺失值
- 26. 餘弦查找與C++
- 27. C#錯誤處理(NaN)
- 28. 計算餘弦值和正弦序列的正弦
- 29. 餘弦距離解釋
- 30. Matlab的餘弦錯誤
啊我的不好,我混在了標題中,我正在使用餘弦定律。問題是它返回一個NaN。 –
@bob_walter查看我的編輯 – arshajii
好的,謝謝你的幫助。如果我將所有的值都放在浮點數0-1中,它應該工作嗎?我所有的維度都是正面的。 –