如圖是8個(gè)塊的轉(zhuǎn)盤,假如傳入的角度值是負(fù)數(shù),如何計(jì)算它對(duì)應(yīng)是哪個(gè)塊呢?
每個(gè)角度是 360 / 8 = 45
0 - 44 = 0
45 - 89 = 1
90 - 134 = 2
135 - 179 = 3
180 - 224 = 4
225 - 269 = 5
270 - 314 = 6
315 - 360 = 7
假如傳入 -1,那么對(duì)應(yīng)的塊應(yīng)該是7
傳入 -46,對(duì)應(yīng)的塊應(yīng)該是6
傳入 90,對(duì)應(yīng)的塊應(yīng)該是2
請(qǐng)問(wèn)是怎么樣的計(jì)算過(guò)程呢?
不過(guò)算出來(lái) -46 對(duì)應(yīng)的是 2,而不是 6,想像一相,反轉(zhuǎn) 5 圈(40)之后再反轉(zhuǎn) 6 個(gè)位置,的確是正數(shù)第 2 個(gè)呵,所以估計(jì)是你給的值有錯(cuò)。
假設(shè)傳入的是n,首先 var index = n % 8
;轉(zhuǎn)盤上的數(shù)字,可以用 array 來(lái)表示。var arr = [0, 1, 2, 3, 4, 5, 6, 7]
然后用 arr.slice(n, n + 1)
就可以得到結(jié)果
然后將結(jié)果加 8 就可以得到正數(shù),但是如果原來(lái)本來(lái)就是正數(shù),加 8 之后就超過(guò)了 8,所以再取一次余
你說(shuō)傳入的是角度,個(gè)人感覺(jué),更像是弧度。
另外,-46應(yīng)該對(duì)應(yīng)2吧?
先取余數(shù),在 JS 里可以直接對(duì)負(fù)數(shù)取余,余數(shù)也是負(fù),比如 -46 % 8 === -6