看了會M雞蛋的直播,M雞蛋的這個技能非常有意思。
所以作為一個火焰數學家,我要來建模了。
考慮到直播中很多東西看的不是太清楚。所以有很多東西是基於我錄製視頻後慢放得到的結果。
這是斐波那契螺旋線嗎
我傾向於認為這是阿基米德螺線
阿基米德螺線(亦稱等速螺線),得名於公元前三世紀希臘數學家阿基米德。阿基米德螺線是一個點勻速離開一個固定點的同時又以固定的角速度繞該固定點轉動而產生的軌跡。
有位朋友畫出了軌跡圖。
by [口可口可]
根據GIF草畫一張圖,球均是以黃線方向出去的,最後形成紅線樣式。
再引用一組更加形象的圖。
by [zhentai]
我想象了一下,不知道是不是這樣子的,修改了下,原來球出去是直線。
原地不動的腦補。
再搬運一位朋友的MATLAB動圖,可以讓大家對此問題有更加形象的認識:
[M雞蛋阿基米德螺旋線之Matlab動圖版]
+R by [糖灬小熊]
提供改進版:
當我們認為爆炸球出現的間隔是均勻的,每次球轉的角度是均勻的,並且球出來後走直線,就可以認為球的軌跡是阿基米德螺線。
要是這幾個不滿足,那阿三設計師就真厲害了。
通過慢動作回放,我得出了以下的假設:
• 爆炸球每0.5s出現一個
• 爆炸球一次出現六個,下次出現的爆炸球會逆時針旋轉10度
在直播中,我聽到了以下的結論
• 人物移動速度是7碼/秒
• 一共放60個球
考慮到我們考慮的是球的路徑,所以不需要知道球的移動速度。
通過我的法師在副本里的實際測量,該區域是80碼x80碼的方形區域,中間大圓的半徑為20碼。
MATLAB繪圖
我們首先考慮跑直線的情形。
寫了一段Matlab代碼,大半夜的腦子不是很清楚,寫的稍稍有點亂。直接更改有註釋的兩行就可以更改初始位置和初始方向(弧度制)。歡迎大家捉蟲:
velocity = 7;
clear
hold on
zz = 0:0.001:2*pi;
m = 0:0.01:100;
for alpha = 1:6
for k = 0:9
%跑直線
qidian = [20,20];%起點
al0 = 0;%初始角度
angle = k*2*pi/36+pi/3*alpha+al0;
pos1 = qidian +[3.5*k*cos(al0),3.5*k*sin(al0)];
plot(pos1(1)+cos(zz),pos1(2)+sin(zz),'color','blue')
x = pos1(1) + (cos(angle) *m);
y = pos1(2) +( sin(angle) * m);
plot(x,y,'color','black')
end
end
axis([0 80 0 80]);
plot(40+20*cos(zz),40+20*sin(zz),'color','red')
plot(40+3*cos(zz),40+3*sin(zz),'color','green')
考慮最簡單的情形
建立笛卡爾座標系。設隊員從(0,0)點出發,沿x軸向右出發。(其他跑直線的結論都是該情況的旋轉平移)
可以得到下圖
從(18,20)出發的結果
跑中間大圓無論順逆時針結果(還需進一步驗證):
其他跑大圓圖片:
結論
對於本場戰鬥而言,我們可以選擇的跑法應該只有跑大圓和跑直線——跑橢圓雖然或許可以得到好結果但是怎麼可能跑出橢圓。
建議採用如下方法:
起點(18,20)左右,如下圖:
經過一天的討論,大家又的出了一些新的內容。
鏡像靠裡一些會更容易多球。不知道為啥圖傳不上來就不上新圖了。
更新:補充了第一組球出在正左正右情況下的跑法,這種情況更加好跑——只要保證你左邊的球恰打不到鏡像,然後跑切線即可。
一些有意義的補充說明
之前只寫了一個大概的框架,許多朋友給出了有意義的問題和見解,摘錄如下:
移動速度會影響結果嗎?
by [橘子皮肉]
樓主你少計算了一個變量,人物初始移動速度是7碼/秒,實際戰鬥中人物的移速會變,比如DH的移速受精通加成,火法的灼燒奧法的彈幕熊T的豹奔等等無數個技能會影響這個參數,所以要把這個變量添加進討論範圍建模實際戰鬥中才有參考的價值,否則就是雞蛋數學家的XJB討論。
我們做速度為100%,110%,120%情況下的結果,分別用黑色、紅色、綠色表示。
可以發現,速度越快,我們的空隙越大,團隊容錯越高。(但是跑太快會撞到自己的球)
有朋友給出了示意圖,將三個鏡像都畫了出來 ...
by [dywfjyie2489]
一個更加“解析化”的做法,我們可以尋找切線的包絡面
[火焰數學家來了][M雞蛋]關於P1走位的計算
有兩位朋友給出了曲線跑法(1)
by [武大狼兒]
以反的角速度跑個弧線不就輕鬆避開了麼?
close all
hold on
zz = 0:0.001:2*pi;
m = 0:0.01:100;
for k = 0:9
for alpha = 1:6
%%%%%%%%%%%%%%%%
al0 = -k*2*pi/36;
%跑直線
qidian = [35,20];%起點
% al0 = 0;%初始角度
angle = k*2*pi/36+pi/3*alpha+al0;
pos1 = qidian +[3.5*k*cos(al0),3.5*k*sin(al0)];
plot(pos1(1)+cos(zz),pos1(2)+sin(zz),'color','blue')
x = pos1(1) + (cos(angle) *m);
y = pos1(2) + (sin(angle) *m);
plot(x,y,'color','black')
end
end
axis([0 80 0 80]);
plot(40+20*cos(zz),40+20*sin(..
有朋友給出了示意圖,將三個鏡像都畫了出來 ...
by [酒醒簾幕低垂]
樓主,這是我給細爺發的圖,我的計算和對慢動作回放的判斷和你一模一樣,我推薦的跑法是小圓弧,最後的效果也和你大圓弧的跑線圖一致。
所以我認為我倆的理解應該都是正確的。細爺覺得有道理,發給了團友,對此我很欣慰;斷大否決了這個跑法,我也能理解,畢竟弧線跑位太過吃力和苛刻。
還有很多朋友給出了形形色色的曲線跑法,不再一一引用。曲線跑法的設計思路可以查看本文中的第一個摺疊。我個人還是擔心跑曲線太難了,也許是我操作水平太渣了。為了說明曲線好不好最好還是畫個動圖說明,實在是沒精力做那麼多事情了。而且最好再做一些加隨機誤差擾動後的動圖,看看結果怎麼樣。
我沒有給出這種方法主要是擔心曲線跑位的微小誤差會帶來球位置的大偏差。畢竟按照固定角度跑步就真的不是alpha而是alpha go了。。。但是這種方法不見得不管用,需要對“曲線跑位的微小誤差會帶來球位置的大偏差”是否成立進行更細緻的驗證。54樓的朋友在68樓提出這個跑法只要角度是偏大而不是偏小就沒有關係。
根據大家的回覆,目前有四點存疑:
• 我可能真的火焰數學家了,跑大圓的模擬出了問題,需要修改。我自己重做了幾張草圖,還需要各位大佬的後續驗證。
• 第一組球的方向——這個問題好解決,把我給出的直線跑法反過來(從右往左)就是“第一組球有兩個是正左正右”(注:考慮到球的旋轉方向,可能要把整張圖旋轉對稱下),正著跑(從左往右)就是“第一組球有兩個是正前正後”
by [ocean198900]
等速螺線無疑。說斐波那契螺線的太扯淡了,用多點的運動構建斐波那契螺線這種曲率不連續的曲線無疑十分麻煩,BLZ不會這麼折騰自己的。這就是h宰相的那個球的模型,直接拿來用了,不過h宰相那個更加困難,黃綠兩種速度還不同。
說人物移動速度影響球速度的也可以洗洗睡了,wow的物理建模裡面沒有多慣性系這個系統,不同速度的系統要不就是不同位面,要不就是接觸判定,不存在速度疊加這個慣性概念。
不過其實這些都毫無意義,建模其實沒有什麼用,因為第一次出球方向的不確定和人員跑動的不穩定性,算出優化路線本身就沒有意義,因為..
• 概括的說,我們把阿基米德螺線和一個勻速直線運動疊加。那麼螺線必然會出現“稀疏”的部分和“稠密”的部分。我們希望“稀疏”的部分穿大團。——這確實可以看作是多普勒效應
• 如果人物轉向,對球有影響嗎?有朋友舉出了像扎昆這樣的例子。我暫時按沒有影響處理。
• 昨晚犯二了沒看見這個區域還有一個半徑40碼的大圓。
• 不過按照有些朋友的評論,跑大圓的結果一定不好,因為“好”的跑法應該是向場外偏轉。