函數atan2
接受2個變量x
和y
,因此它可以返回範圍爲2pi
的範圍的角度而不是pi
。但爲什麼從來沒有tan2
這是atan2
完全相反,並返回2個值x
和y
基於給定的角度?有沒有更簡單的方法來獲得我失蹤的角度的方向矢量?爲什麼從來沒有tan2?
1
A
回答
3
深層原因可能是因爲FORTRAN函數返回一個值。
確實,y= sin(x)
,x= cos(x)
是你所需要的。 (另外,y= r * sin(x)
,x= r * cos(x)
允許您提供一個向量長度)。
這種缺乏對用戶和實現一個挫折,因爲它是相當頻繁在同一時間需要兩個值,而這將允許優化掉一些常見的計算。
2
功能
t => { cos(t), sin(t) }
將是這樣的功能;但它不會是atan2
的「反向」功能。
2
存在tan2 dosent存在,因爲沒有單一的x和y值滿足tan(theta),因爲tan是相鄰相鄰的比率。
讓我們說,tan2確實存在 然後tan2(60°)將返回
opp=sqrt (3) & adj=1
由於譚(60°)= OPP/ADJ =的sqrt(3)
但它也可能返回
opp=3 & adj=sqrt (3)
而且這也等於sqrt(3);
由於曬黑是隻返回一個值的比值,即 opposide與相鄰
的比值,也大多數編程語言。如果你既需要sin(x)
一個函數只能返回一個值
+0
自然慣例是返回x和y,使它們的2範數是1(例如cos/sin)。 – Sneftel
0
和cos(x)
爲同一x
,你想高效地計算它,有一個GNU擴展中的glibc:
void sincos(double x, double *sin, double *cos);
看到sincos()
在math.h
。
再向前邁進一步,如果海灣合作委員會承認,你既需要sin(x)
和cos(x)
但在簡單的方式計算出它們,即用2函數調用,它會生成代碼,只要求sincos()
。我覺得這很整齊。
相關問題
- 1. 爲什麼CONCAT從來沒有()在rxswift
- 2. 爲什麼sem_timedwait()沒有醒來?
- 3. 爲什麼沒有未來::等待()塊
- 4. 爲什麼沒有PWM信號出來?
- 5. 什麼都沒有回來?
- 6. 爲什麼afterRender從來沒有打過電話?
- 7. 爲什麼功能從來沒有叫REDX thunk
- 8. 時使用retainCount(從來沒有,爲什麼)
- 9. 爲什麼p從來沒有超過2
- 10. Angularjs:爲什麼$ http從來沒有和我一起工作?
- 11. 按鈕state_pressed =「真」從來沒有觸發,爲什麼?
- 12. 爲什麼CMDeviceMotionHandler從來沒有被CoreMotion調用過?
- 13. 爲什麼document.querySelector從來沒有使用過
- 14. 爲什麼我的析構函數從來沒有調用過?
- 15. 爲什麼paintComponent()從來沒有被repaint()調用過?
- 16. 爲什麼Guid.NewGuid從來沒有產生GUID,它不包含4?
- 17. 爲什麼我沒有從android
- 18. 爲什麼Me.components什麼都沒有?
- 19. 爲什麼我的課沒有什麼?
- 20. 爲什麼gridview.selectedColumns什麼都沒有?
- 21. 爲什麼file_get_contents從Web服務中什麼都沒有得到?
- 22. 爲什麼沒有java.lang.UnsupportedClassVersionError?
- 23. 爲什麼沒有asyncContext.cancel()
- 24. 爲什麼沒有uniform_distribution?
- 25. 爲什麼沒有SortedList
- 26. 爲什麼Java沒有宏?
- 27. 爲什麼沒有UTF-24?
- 28. 爲什麼UDP沒有「accept()」?
- 29. 爲什麼沒有InterlockedExchangeSubtract64?
- 30. 爲什麼current_user沒有?
'sin'和'cos'怎麼樣? –
這就是我的想法 - 有沒有我在這裏失蹤的東西? – Codor
有這樣的功能,它可以做到。看到我的答案。 – Ali