- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
节奏大师三维算法
作者:干驴
一、序言
大家玩了这么长时间的节奏大师,是否发现了节奏大师的三维算法、乐动时代的三维算法、迷你节奏的三维算法是不同的,此外O2jamU和音速出击都跟节奏大师用相同的三维算法。
其实这个算法在我的节奏作谱师和最强出击中早有应用,只不过最近★邹又有新创意了,可能需要这个算法,我就顺便发布一下了。
二、要来简单介绍一下这三种算法
1.迷你节奏:标准的三维算法(可以百度一下“透视算法”以及“OpenGL”等关键词)
你可以简单的想象你站在平直的公路上,一辆车从远处匀速驶来,这就是透视算法。
这种算法的好处在于它已成型,有现成的算法,不用自己算;缺点在于屏幕最下方的速度非常大,难以把握时机。当然,透视算法是可以改变角度的,请看下图。
这将是你们从未见过的景象。
(图1)
(图2)
2.乐动时代:匀速下落,均匀变大
算法非常简单,按键中心沿着轨迹直线走,按键的大小正比于中心纵坐标,中心纵坐标正于时间。
这种算法的缺点是下落不自然,感觉上方快下方慢,上方间隔大下方间隔小,疏密不均匀;但优点就在于算法简单可行,很容易想到。
3.节奏大师:请先观察魔理沙结尾的按键
(图3)
(图4)
你会发现每一个按键都与上一个按键重叠按键高度同样的比例,而且你也知道最后这堆叠键的间隔是相同的,这也就是说:在同样时间内下落的距离正比于按键的高度,也就正比于按键的宽度。
这种算法的有点在于下落自然,无论按键在哪,两个按键的间隔都是与按键高度成比例的,就是感觉上距离一样,但这并不是透视算法;缺点就是计算量大,可能比透视算法还要大。
下面我们就来分析一下节奏大师的三维算法。
三、推导算法
所需数学工具:微元法,微积分,对数,指数,反函数。
1.确定一些常数
轨道上下宽度之比为0.15。(通过截图测得)
音符从屏幕顶端到屏幕底端所需时间1速2500毫秒,几速就除以几。(通过录像慢放测得)
2.建立坐标系
以屏幕底端中点为原点,以屏幕宽度一半为横坐标单位1,屏幕高度为纵坐标单位1,建立平面直角坐标系(如图)。
(之所以用1,是因为计算时方便,学数学的都会喜欢单位1)
(图5)
同时轨道边缘的直线方程也就可以给出了(见上图)。(为了便于编程,里面的0.15作为一个常数,就不和1合并了)
3.由分析可知,按键宽度越大下落速度就越快(成正比),也就是坐标系中x越大下落速度就越大(成正比),换句话说就是下落同样极短距离所需时间就越短(成反比)。
4.求时间t关于纵坐标y的函数
(有人可能会问,我们想要的不是y关于t的函数吗,为什么要先求t关于y的函数,这个我在最后讲)
设屏幕底端的时间为t,向上为正方向,计算从y=0到y=y0的时间(如图)。
(图6)
这个定积分的结果是这样的(如图)。
(图7)
(如果你不会求这个定积分,结尾我讲换元法)
5.为了研究方便,我们再次将屏幕顶端的时间定为1。
我们需要将原来的时间伸缩。
要算原来屏幕顶端的时间,令y=1即可,得到一个数,用原来的式子除以它就行了(如图)。
(图8)
6.现在我们知道了如何根据y求t,那么根据t求y只需求反函数即可(如图)。
(图9)
7.相对位置变绝对位置
对于相对位置(最大值为1的量),我加一个撇来表示,结论如下。
四、结论
已知一个音符距离屏幕底端t毫秒,上下宽度比为0.15,则有(如图)
(图10)
五、优化
我的算法中有许多常数可以事先算好,比如我的部分代码(如图)
(图11)
六、附录
1.求y关于t的函数,与求t关于y的函数的区别(如图)
(图12)
说实在的,方法一我能猜出是指数型函数,因为一个函数的积分还是本身的只有指数型,但具体是什么我猜不出来。
2.那个定积分的求法(如图)
(图13)
全文完毕,我的算法不一定是最好的,学霸勿喷,欢迎提出意见。
原创力文档


文档评论(0)