matlab动态图阿基米德螺旋,魔兽世界M基尔加丹阿基米德螺旋线之Matlab动图!国服加油...

本文详细分析了游戏中的M鸡蛋技能,探讨了直线跑位和弧线跑位两种策略。通过对技能机制的研究,得出结论:静坐标系下,安全区的形状受到起始角度和移动路线的影响。尝试通过改变速度和路径来形成理想圆形安全区,但实际操作存在挑战。几家公会选择的混合跑位策略在应对复杂技能时更具优势。
摘要由CSDN通过智能技术生成

8011563aa10e22ece1117694dfc43ce1.png

前排感谢大家的支持~国服加油!~大家游戏愉快

目前已知的信息:

阿尔法之前尝试的是直线跑位,佶天鸿尝试的是120度圆心角的弧线跑位

阿尔法已经靠此 及应变 成功 艰难苟活 度过P1进入P2

因此,在几家公会已经达成共识的情况下,本文不再作路线规划的建议,只会尝试作一些对他们这种选择的解释和补充

重要的问题:

圈每轮转动10度这个条件,其转动方向是以人物前进方向(动坐标系)为参考还是以场地本身(静坐标系)为参考的?

前者意味着可以通过转身控制球的发射方向,后者意味着人物只是提供落点。

PS.个人更倾向于后者,因为目前没有任何一个BOSS的技能会依据人物前进方向而改变,更多的只是判定人物位置;

而唯一个最接近鸡蛋技能的就是扎昆的种子,该技能同样不会被面向影响。

目前看来,实际使用的是静坐标系,所以想通过转身把圈放成直线的可以歇啦。~

前排编辑1:

目前看到的一个 没什么用的 结论:(感谢#108楼帮助,进一步思考了这个问题)

安全区的方位=球10度旋转轴(垂直屏幕向外)叉乘人物移动方向。矢量叉乘哟~

应要求加入了改进版带轨迹的图片,更加直观~

静止放

e19289e5ee650f75705efc1b63b24dc7.png

直线放(横向)

e064975f85c66205dcc36ece199c2e9a.png

直线放(纵向)

f2049555ac1c4941aa81db7f2999597e.png

#96楼朋友提出,弧线跑位时起点位置会影响安全区,并且自己做了个插件,有需要可以移步

下两图是刚开始随意设置数值的弧线放圈效果,更详细的分析可以见“前排编辑2”

120度圆心角放(-180度起点)

001c52626e8f912b6a1487aa154eb23c.png

120度圆心角放(-150度起点)

6d52bcf80cbd43a44be15372ca9863db.png

前排编辑2:

做个简单的计算:人物移动速度是7码每秒,圈0.5秒一轮,如果想使球的每轮路径均为某个圆的切线(效果图在下面),使得安全区成为一个标准圆

则需要使3.5码弧对应10度的角度,人物的速度限制了这一距离。

那么代码代入R=20的条件,圈的起始角为0度,从-150度开始跑,共转过90度,效果如下:

90度圆心角放(-150度起点,半径20)

361da8a490ee8df0b90b109dea8e708d.png

嗯,看似很美好,然而实际上,安全区只是一个10码半径的圆。

而我们再来看看起始位置如果差了20度的效果(从-130起跑):

90度圆心角放(-130度起点,半径20)

78de3dc938fff23779ae5934959dcec5.png

可以看到,安全区的空间被大大压缩了,这还是建立在已知起始角是0度的情况,如果起始角不是0度,或者半径20码控制得不严格,都会对结果造成很大的影响(详情可见后文图)。

那么现在看来,形成你所说的理想圆形安全区需要的条件如下:

一、知道圈的起始角

二、根据起始角定下的严格跑圈路线

三、严格执行跑圈的路线

然后最终只能得到一个10码半径的安全区。

所以这么看来,几家公会的放弃这种看似最规整的跑法,选择离大团30码 参杂灵性跑位 是很有道理的

作为一个 闲的没事的 圣光数学家,昨晚也观摩了下M鸡蛋的炫酷技能,引用早上看到一篇帖子的模型,用Matlab画了个动图版本,可以随意感受一下

下图是静止放完圈的效果,其轮廓形成阿基米德螺线:

57c1ac524fb94ef6445aeaf259e25d5e.png

下图是正常速度直线移动放圈的效果:

7e2a84e5967fcc2cd658aa96d58929a1.png

圈的移动速度和人的移动速度都是可以调的,有兴趣的胖友可以找我要下源代码。

本来想试试3个圈一起跑结果计算量太大直接卡死了。。

另外还作了一个人物移动速度爆表的放圈效果, 化身追风少年

85fac1ea071f3aeb76034748f056b5fe.png

因为初始每60度会有一轮圈,每轮圈转动10度,共转动9次,从这几个图可以得到初步结论:

如果静止不动放圈,场地上的每一个位置都会至少有一个球的轨迹经过(除非相邻两线间距过大产生缝隙,实际很难出现这种情况)

如果正常速度放圈,移动方向圈会变得密集,从而导致其前进方向的圈扫过的角度比其身后的圈扫过的角度要大,因此身后方向只需少许横移即可躲过。 多普勒效应?

如果加速技能放圈,理想情况为紧紧跟着第一轮产生的圈,那么每个方向的球经过的轨迹都会很接近一条直线,只要严格放出第N与N+1轮圈的位置,那么这两轮圈之间将会有很大的空隙。 音障?

放圈的人的速度受两个制约条件:

一、若跟随前一轮圈,则必须慢于前一轮圈(上限)

二、必须在下一轮圈落地前离开爆炸范围(下限)

之前帖子中有人提出的弧线跑位效果(静坐标系)完成

动坐标系一想就可以知道效果,而程序上实现比较困难就不作模拟了。

静坐标系,正向转动90度放圈

bcb14290438e3bf07fd4f2dd6ef5ac14.png

静坐标系,反向转动90度放圈

8a9ee92e6e0d7f2c5801fa7d6961f33f.png

可以看到效果并不理想

静坐标系,反向转动180度放圈

3fa2457f4f96650373a081ab1b42a4ac.png

场地右侧同样出现了类似直线放圈的空隙,但跑位难度增加很多,显然不如直线跑位

453f8db584d9f19db810fd8de58c87d1.png

效果同样没有想象中理想

附Matlab源代码,长慎点。

通过改变x1,y1至xt,yt的值即可改变 每一轮圈的位置,也侧面反映的人物移动速度和方向。

改变注释“球速”那一行中间的数字可以改变球的移动速度。

按需修改~

clear

axis([-40,60,-40,60])

hold on

% r=10;

% 想要弧线放圈则使用参数r*cosd(角度)为x赋值,使用r*sind(角度)为y赋值即可

x1=-20;

y1=0;

x2=-15;

y2=0;

x3=-10;

y3=0;

x4=-5;

y4=0;

x5=0;

y5=0;

x6=5;

y6=0;

x7=10;

y7=0;

x8=15;

y8=0;

x9=20;

y9=0;

xt=25;

yt=0;

% 直线轨迹部分,有需要可以取消注释

% plot([x1,x1+100*cosd(60)],[y1,y1+100*sind(60)],'b')

% plot([x2,x2+100*cosd(70)],[y2,y2+100*sind(70)],'b')

% plot([x3,x3+100*cosd(80)],[y3,y3+100*sind(80)],'b')

% plot([x4,x4+100*cosd(90)],[y4,y4+100*sind(90)],'b')

% plot([x5,x5+100*cosd(100)],[y5,y5+100*sind(100)],'b')

% plot([x6,x6+100*cosd(110)],[y6,y6+100*sind(110)],'b')

% plot([x7,x7+100*cosd(120)],[y7,y7+100*sind(120)],'b')

% plot([x8,x8+100*cosd(130)],[y8,y8+100*sind(130)],'b')

% plot([x9,x9+100*cosd(140)],[y9,y9+100*sind(140)],'b')

% plot([xt,xt+100*cosd(150)],[yt,yt+100*sind(150)],'b')

% plot([x1,x1+50*cosd(0)],[y1,y1+50*sind(0)],'b')

% plot([x2,x2+50*cosd(10)],[y2,y2+50*sind(10)],'b')

% plot([x3,x3+50*cosd(20)],[y3,y3+50*sind(20)],'b')

% plot([x4,x4+50*cosd(30)],[y4,y4+50*sind(30)],'b')

% plot([x5,x5+50*cosd(40)],[y5,y5+50*sind(40)],'b')

% plot([x6,x6+50*cosd(50)],[y6,y6+50*sind(50)],'b')

% plot([x7,x7+50*cosd(60)],[y7,y7+50*sind(60)],'b')

% plot([x8,x8+100*cosd(70)],[y8,y8+100*sind(70)],'b')

% plot([x9,x9+100*cosd(80)],[y9,y9+100*sind(80)],'b')

% plot([xt,xt+100*cosd(90)],[yt,yt+100*sind(90)],'b')

h11 = plot(x1,y1,'or');

h21 = plot(x1,y1,'or');

h31 = plot(x1,y1,'or');

h41 = plot(x1,y1,'or');

h51 = plot(x1,y1,'or');

h61 = plot(x1,y1,'or');

h12 = plot(x2,y2,'or');

h22 = plot(x2,y2,'or');

h32 = plot(x2,y2,'or');

h42 = plot(x2,y2,'or');

h52 = plot(x2,y2,'or');

h62 = plot(x2,y2,'or');

h13 = plot(x3,y3,'or');

h23 = plot(x3,y3,'or');

h33 = plot(x3,y3,'or');

h43 = plot(x3,y3,'or');

h53 = plot(x3,y3,'or');

h63 = plot(x3,y3,'or');

h14 = plot(x4,y4,'or');

h24 = plot(x4,y4,'or');

h34 = plot(x4,y4,'or');

h44 = plot(x4,y4,'or');

h54 = plot(x4,y4,'or');

h64 = plot(x4,y4,'or');

h15 = plot(x5,y5,'or');

h25 = plot(x5,y5,'or');

h35 = plot(x5,y5,'or');

h45 = plot(x5,y5,'or');

h55 = plot(x5,y5,'or');

h65 = plot(x5,y5,'or');

h16 = plot(x6,y6,'or');

h26 = plot(x6,y6,'or');

h36 = plot(x6,y6,'or');

h46 = plot(x6,y6,'or');

h56 = plot(x6,y6,'or');

h66 = plot(x6,y6,'or');

h17 = plot(x7,y7,'or');

h27 = plot(x7,y7,'or');

h37 = plot(x7,y7,'or');

h47 = plot(x7,y7,'or');

h57 = plot(x7,y7,'or');

h67 = plot(x7,y7,'or');

h18 = plot(x8,y8,'or');

h28 = plot(x8,y8,'or');

h38 = plot(x8,y8,'or');

h48 = plot(x8,y8,'or');

h58 = plot(x8,y8,'or');

h68 = plot(x8,y8,'or');

h19 = plot(x9,y9,'or');

h29 = plot(x9,y9,'or');

h39 = plot(x9,y9,'or');

h49 = plot(x9,y9,'or');

h59 = plot(x9,y9,'or');

h69 = plot(x9,y9,'or');

h1t = plot(xt,yt,'or');

h2t = plot(xt,yt,'or');

h3t = plot(xt,yt,'or');

h4t = plot(xt,yt,'or');

h5t = plot(xt,yt,'or');

h6t = plot(xt,yt,'or');

z=0:0.2:500;%球速,改变中间的数字即可改变球速

a=35:35:340;

for i = 1:500

set(h11,'Xdata',z(i)+x1,'Ydata',0+y1);

set(h21,'Xdata',z(i)*cosd(60)+x1,'Ydata',z(i)*sind(60)+y1);

set(h31,'Xdata',z(i)*cosd(120)+x1,'Ydata',z(i)*sind(120)+y1);

set(h41,'Xdata',z(i)*cosd(180)+x1,'Ydata',z(i)*sind(180)+y1);

set(h51,'Xdata',z(i)*cosd(240)+x1,'Ydata',z(i)*sind(240)+y1);

set(h61,'Xdata',z(i)*cosd(300)+x1,'Ydata',z(i)*sind(300)+y1);

if i>=a(1)

set(h12,'Xdata',z(i-a(1)+1)*cosd(10)+x2,'Ydata',z(i-a(1)+1)*sind(10)+y2);

set(h22,'Xdata',z(i-a(1)+1)*cosd(60+10)+x2,'Ydata',z(i-a(1)+1)*sind(60+10)+y2);

set(h32,'Xdata',z(i-a(1)+1)*cosd(120+10)+x2,'Ydata',z(i-a(1)+1)*sind(120+10)+y2);

set(h42,'Xdata',z(i-a(1)+1)*cosd(180+10)+x2,'Ydata',z(i-a(1)+1)*sind(180+10)+y2);

set(h52,'Xdata',z(i-a(1)+1)*cosd(240+10)+x2,'Ydata',z(i-a(1)+1)*sind(240+10)+y2);

set(h62,'Xdata',z(i-a(1)+1)*cosd(300+10)+x2,'Ydata',z(i-a(1)+1)*sind(300+10)+y2);

end

if i>=a(2)

set(h13,'Xdata',z(i-a(2)+1)*cosd(20)+x3,'Ydata',z(i-a(2)+1)*sind(20)+y3);

set(h23,'Xdata',z(i-a(2)+1)*cosd(60+20)+x3,'Ydata',z(i-a(2)+1)*sind(60+20)+y3);

set(h33,'Xdata',z(i-a(2)+1)*cosd(120+20)+x3,'Ydata',z(i-a(2)+1)*sind(120+20)+y3);

set(h43,'Xdata',z(i-a(2)+1)*cosd(180+20)+x3,'Ydata',z(i-a(2)+1)*sind(180+20)+y3);

set(h53,'Xdata',z(i-a(2)+1)*cosd(240+20)+x3,'Ydata',z(i-a(2)+1)*sind(240+20)+y3);

set(h63,'Xdata',z(i-a(2)+1)*cosd(300+20)+x3,'Ydata',z(i-a(2)+1)*sind(300+20)+y3);

end

if i>=a(3)

set(h14,'Xdata',z(i-a(3)+1)*cosd(30)+x4,'Ydata',z(i-a(3)+1)*sind(30)+y4);

set(h24,'Xdata',z(i-a(3)+1)*cosd(60+30)+x4,'Ydata',z(i-a(3)+1)*sind(60+30)+y4);

set(h34,'Xdata',z(i-a(3)+1)*cosd(120+30)+x4,'Ydata',z(i-a(3)+1)*sind(120+30)+y4);

set(h44,'Xdata',z(i-a(3)+1)*cosd(180+30)+x4,'Ydata',z(i-a(3)+1)*sind(180+30)+y4);

set(h54,'Xdata',z(i-a(3)+1)*cosd(240+30)+x4,'Ydata',z(i-a(3)+1)*sind(240+30)+y4);

set(h64,'Xdata',z(i-a(3)+1)*cosd(300+30)+x4,'Ydata',z(i-a(3)+1)*sind(300+30)+y4);

end

if i>=a(4)

set(h15,'Xdata',z(i-a(4)+1)*cosd(40)+x5,'Ydata',z(i-a(4)+1)*sind(40)+y5);

set(h25,'Xdata',z(i-a(4)+1)*cosd(60+40)+x5,'Ydata',z(i-a(4)+1)*sind(60+40)+y5);

set(h35,'Xdata',z(i-a(4)+1)*cosd(120+40)+x5,'Ydata',z(i-a(4)+1)*sind(120+40)+y5);

set(h45,'Xdata',z(i-a(4)+1)*cosd(180+40)+x5,'Ydata',z(i-a(4)+1)*sind(180+40)+y5);

set(h55,'Xdata',z(i-a(4)+1)*cosd(240+40)+x5,'Ydata',z(i-a(4)+1)*sind(240+40)+y5);

set(h65,'Xdata',z(i-a(4)+1)*cosd(300+40)+x5,'Ydata',z(i-a(4)+1)*sind(300+40)+y5);

end

if i>=a(5)

set(h16,'Xdata',z(i-a(5)+1)*cosd(50)+x6,'Ydata',z(i-a(5)+1)*sind(50)+y6);

set(h26,'Xdata',z(i-a(5)+1)*cosd(60+50)+x6,'Ydata',z(i-a(5)+1)*sind(60+50)+y6);

set(h36,'Xdata',z(i-a(5)+1)*cosd(120+50)+x6,'Ydata',z(i-a(5)+1)*sind(120+50)+y6);

set(h46,'Xdata',z(i-a(5)+1)*cosd(180+50)+x6,'Ydata',z(i-a(5)+1)*sind(180+50)+y6);

set(h56,'Xdata',z(i-a(5)+1)*cosd(240+50)+x6,'Ydata',z(i-a(5)+1)*sind(240+50)+y6);

set(h66,'Xdata',z(i-a(5)+1)*cosd(300+50)+x6,'Ydata',z(i-a(5)+1)*sind(300+50)+y6);

end

if i>=a(6)

set(h17,'Xdata',z(i-a(6)+1)*cosd(60)+x7,'Ydata',z(i-a(6)+1)*sind(60)+y7);

set(h27,'Xdata',z(i-a(6)+1)*cosd(60+60)+x7,'Ydata',z(i-a(6)+1)*sind(60+60)+y7);

set(h37,'Xdata',z(i-a(6)+1)*cosd(120+60)+x7,'Ydata',z(i-a(6)+1)*sind(120+60)+y7);

set(h47,'Xdata',z(i-a(6)+1)*cosd(180+60)+x7,'Ydata',z(i-a(6)+1)*sind(180+60)+y7);

set(h57,'Xdata',z(i-a(6)+1)*cosd(240+60)+x7,'Ydata',z(i-a(6)+1)*sind(240+60)+y7);

set(h67,'Xdata',z(i-a(6)+1)*cosd(300+60)+x7,'Ydata',z(i-a(6)+1)*sind(300+60)+y7);

end

if i>=a(7)

set(h18,'Xdata',z(i-a(7)+1)*cosd(70)+x8,'Ydata',z(i-a(7)+1)*sind(70)+y8);

set(h28,'Xdata',z(i-a(7)+1)*cosd(60+70)+x8,'Ydata',z(i-a(7)+1)*sind(60+70)+y8);

set(h38,'Xdata',z(i-a(7)+1)*cosd(120+70)+x8,'Ydata',z(i-a(7)+1)*sind(120+70)+y8);

set(h48,'Xdata',z(i-a(7)+1)*cosd(180+70)+x8,'Ydata',z(i-a(7)+1)*sind(180+70)+y8);

set(h58,'Xdata',z(i-a(7)+1)*cosd(240+70)+x8,'Ydata',z(i-a(7)+1)*sind(240+70)+y8);

set(h68,'Xdata',z(i-a(7)+1)*cosd(300+70)+x8,'Ydata',z(i-a(7)+1)*sind(300+70)+y8);

end

if i>=a(8)

set(h19,'Xdata',z(i-a(8)+1)*cosd(80)+x9,'Ydata',z(i-a(8)+1)*sind(80)+y9);

set(h29,'Xdata',z(i-a(8)+1)*cosd(60+80)+x9,'Ydata',z(i-a(8)+1)*sind(60+80)+y9);

set(h39,'Xdata',z(i-a(8)+1)*cosd(120+80)+x9,'Ydata',z(i-a(8)+1)*sind(120+80)+y9);

set(h49,'Xdata',z(i-a(8)+1)*cosd(180+80)+x9,'Ydata',z(i-a(8)+1)*sind(180+80)+y9);

set(h59,'Xdata',z(i-a(8)+1)*cosd(240+80)+x9,'Ydata',z(i-a(8)+1)*sind(240+80)+y9);

set(h69,'Xdata',z(i-a(8)+1)*cosd(300+80)+x9,'Ydata',z(i-a(8)+1)*sind(300+80)+y9);

end

if i>=a(9)

set(h1t,'Xdata',z(i-a(9)+1)*cosd(90)+xt,'Ydata',z(i-a(9)+1)*sind(90)+yt);

set(h2t,'Xdata',z(i-a(9)+1)*cosd(60+90)+xt,'Ydata',z(i-a(9)+1)*sind(60+90)+yt);

set(h3t,'Xdata',z(i-a(9)+1)*cosd(120+90)+xt,'Ydata',z(i-a(9)+1)*sind(120+90)+yt);

set(h4t,'Xdata',z(i-a(9)+1)*cosd(180+90)+xt,'Ydata',z(i-a(9)+1)*sind(180+90)+yt);

set(h5t,'Xdata',z(i-a(9)+1)*cosd(240+90)+xt,'Ydata',z(i-a(9)+1)*sind(240+90)+yt);

set(h6t,'Xdata',z(i-a(9)+1)*cosd(300+90)+xt,'Ydata',z(i-a(9)+1)*sind(300+90)+yt);

end

pause(0.01); % 调整速度

end

hold off

来自NGA 作者糖灬小熊

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值