為什么說Ninjabrain Bot的原理不是簡單的兩線一點(diǎn)?
要想清楚這個(gè)問題, 一個(gè)很簡單的事情就是先明白所謂"兩線一點(diǎn)"的定義. 在數(shù)學(xué)上, 兩線一點(diǎn)的定義就是
"在一個(gè)平面中, 兩條互不平行的直線能確定唯一的一個(gè)點(diǎn). "?
在1.16.1版本的Minecraft主世界中, F3+C的語法為
/execute in minecraft:overworld run tp @s coord_X coord_Y coord_Z rotation_1 rotation_2
我們只關(guān)注坐標(biāo)(coord_X, coord_Y, coord_Z)和方位角<rotation_1>.?
然而在復(fù)制下來的坐標(biāo)中,?rotation_1的精度極限是0.01°, 這意味著什么? 這意味著如果你和要塞連線的方位角的千分位接近5, 那么是不是就一定會(huì)有0.005°的誤差? 這樣的測量還能算是一條直線嗎? 所以, 單顆末影之眼的測量范圍是兩條射線所夾的部分, 對于雙眼, 則是如下圖所示的范圍

我前些天在discord上詢問了Ninjabrain關(guān)于他的bot的一些問題, 下面是我和他的聊天記錄:?


有人可能會(huì)懷疑, 0.01°的精度還不夠嗎? 所以:?
下面我做了一個(gè)測試, 測試如果僅憑F3+C的坐標(biāo)和方位角rotation_1, 不考慮其他條件, 能否解出要塞坐標(biāo):?
根據(jù)Ninjabrain及其團(tuán)隊(duì)的測試, 玩家和要塞連線的方位角α滿足下列正態(tài)分布:?
在不使用eyezoom的情況下, 標(biāo)準(zhǔn)偏差一般為0.008, 根據(jù)正態(tài)分布的規(guī)則, 位于[μ-3σ, μ+3σ]之間的概率為99.73%, 這里我們就取正負(fù)2.5個(gè)σ, 也就是
在一次測量中, 我得到了下述的數(shù)據(jù) (測試種子: seed:?[1475983533634471550], 所測試的要塞位于/execute in minecraft:overworld run tp @s 1348.50 37.00 1028.50 -90.00 0.00, 未使用eyezoom, 測試時(shí)扔出兩個(gè)末影之眼之間的距離為30格, 要塞距離為1700格)?

根據(jù)這個(gè)測試數(shù)據(jù)以及上述提到的, 我在幾何畫板上進(jìn)行了模擬, 如下:?

看起來只有兩條線, 是因?yàn)榻嵌?.04°在相交處差別非常小, 我們到要塞的坐標(biāo)那邊就能看得出來差距:?


如圖所示, 四邊形ABCD就是我一開始給的那張圖的范圍, 也就是說要塞可能落在這個(gè)范圍內(nèi). 我們可以看到點(diǎn)P(1352, 1032) (為什么兩個(gè)軸的坐標(biāo)比測試數(shù)據(jù)都加了4? 因?yàn)槲彝洶袾injabrain bot改成顯示在8,8了)就是要塞的坐標(biāo), 確實(shí)位于這個(gè)范圍內(nèi). 但是這個(gè)范圍有多大呢??
我們先看左上方的小正方形, 它的邊長在坐標(biāo)系網(wǎng)格下是5, 所以它的面積是25平方格, 在此縮放尺寸下它的面積是3.00cm2, 而幾何畫板顯示要塞可能位于的區(qū)域是9.93cm2, 我們可以通過簡單的計(jì)算, 得出這個(gè)范圍占據(jù)多少平方格:?
你要在82平方格的區(qū)域中確定一格要塞? 我覺得這是完全不現(xiàn)實(shí)的吧??而Ninjabrain Bot卻能給出100%的置信度, 這說明Ninjabrain Bot的算法完全不是基于兩線一點(diǎn)的, 詳細(xì)的原理可以看上文提到的我和Ninjabrain的聊天記錄.?
至于我沒有閱讀的一大段部分 (論文的第二部分, 算出要塞是如何分布的), 這個(gè)要塞分布則是通過一段代碼來實(shí)現(xiàn), 這里不做展開, 這和處理玩家數(shù)據(jù)沒有太大的關(guān)系.?
有任何疑問歡迎在評論區(qū)討論.?