我有兩個歸一化的角度(0 到 360 度之間),我想找到從a點到b點的最短轉彎方向。(順時針或逆時針)。a或b可以在圓上的任何位置,因此該函式應該以兩種方式作業:如果a更小,如果a大于b。
我撰寫了以下函式,除了最短距離越過 0 度標記時,它作業正常:
function clockwise(a, b){
return a < b;
}
如果是順時針,則函式回傳true,如果方向是逆時針,則回傳false。
我怎樣才能讓它在跨越 0 度角的距離上作業?我正在尋找專門在 JavaScript 中的實作,因為我無法翻譯我找到的任何數學解釋。提前致謝!

uj5u.com熱心網友回復:
相對于a點,
- 是順時針,如果 b 存在則在接下來的 180
- 否則逆時針
function clockwise(a, b){
let theta1 = b-a;
return theta1 >= 0 && theta1 <= 180; // return true if clockwise
}
uj5u.com熱心網友回復:
可能有一個更優雅的解決方案,但我認為這給出了預期的結果?
(如果a=60, b=230不同的是170和clockwise=true是正確的..?!)
function clockwise(a, b) {
let clockwise, diff
if (b > a) {
diff = b - a
clockwise = diff >= 0 && diff <= 180
} else {
diff = a - b
clockwise = diff >= 180
}
return clockwise
}
console.log(clockwise(60,230)) // true
console.log(clockwise(220,150)) // false
console.log(clockwise(40,300)) // false
console.log(clockwise(120,214)) // true
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/357746.html
標籤:javascript 数学 几何学
上一篇:找到產生給定值的最小硬幣集
下一篇:創建帶比例的條形圖
