【关于正交圆判定的分析】
上一次文章介绍了stg中常用的判定形状。其中,东方STG从TH11《东方地灵殿》开始采用的正交圆判定非常独特。本文就来分析一下正交圆判定所引出的一些问题。之所以将本文的编号写成了“点五”,是因为我觉得正交圆这个判定方法几乎没什么用处,除了我们的神主以外,应该没人会使用这个判定方法吧。。。
本文大量数据参考自 http://thwiki.cc/游戏攻略/STG判定数据
首先还是先看一下判定公式和形状,并和传统圆形判定做一个对比。
这里将D认为是两物体的临界判定距离,实际距离小于D时则相交,大于D则相离
传统圆形判定公式:
D^2=(r1+r2)^2或D=r1+r2
正交圆判定公式:
D^2=R1^2+R2^2
这两者的几何意义如下图所示,传统圆形判定临界状态是两圆相切,而正交圆判定的临界状态是两圆正交。

试想一下,假设自机与一个中玉判定

同样要达到这个判定效果,如果用传统圆形判定,按自机半径2,中玉半径5,则临界距离D=7
如果按正交圆判定,可以按自己半径2,中玉判定6.71,从而获得完全相同的效果。

如果使用正交圆判定代替圆形判定,对于自机判定半径一定的情况下,可以通过设定子弹的判定半径,来达到和圆形判定完全等效的结果。判定形状依然是圆形,只不过是半径数值比传统圆形大一些而已。
通过以上分析,正交圆和传统圆形判定是否可以完全等效呢?我认为事情并没有这么简单,因为自机的判定半径并不是不变的,众所周知,魔理沙比较胖,灵梦比较瘦,各自机判定半径数值不相等,而子弹的判定半径不会针对各个自机专门设定数值。那么这意味着什么,且看下面的分析。
以下需要用一下高等数学的知识,还没上大学的小伙伴也不用担心看不懂,过程不重要,后面会解释其结果的意义。
拿出上述判定公式
对于圆形
D^2=(r1+r2)^2或D=r1+r2
将其视为D关于r1、r2的函数,对r1求偏导
∂D/∂r1=1
很显然,临界距离D和中间任何一个r都是线性关系。
对于正交圆
D^2=R1^2+R2^2
对R1求偏导
以下我懒得输公式,就直接贴手写版了

这个结果首先说明,D和R1不是线性关系。
同时,当R2越大,D随R1的变化率就越小,R2越小,D随R1的变化率就越大。极端情况,当R2=0时,∂D/ ∂R1=1,这种情况下D与R1等比增长。其实想想也知道,此时D=R1
当R2->∞时,∂D/ ∂R1->0,因为此时R1几乎与D垂直,D不随R1变化而变化。
同时,还是对于D和R1的偏导数情况,当R2恒定时,可以看出R1较小时,D随R1的变化率较小,当R1较大时,D随R1的变化率较大。
其实从几何上更好理解

R1越大,R1与D的夹角θ越小,D随R1的变化率就大
类似的
R1越小,θ越大,D随R1的变化率就小;
R2越大,θ越大,D随R1的变化率就小;
R2越小,θ越小,D随R1的变化率就大
以上就是关于正交圆判定性质的分析,不管怎样,其实推导过程什么的不重要,关键是以上结论会带来什么实际影响。
这个问题可以从这个角度考虑,子弹的判定半径一般是不变的,小玉、中玉、大玉的半径是不会在游戏中发生改变的,除了辉针城里有一些小锤引起的子弹缩放,其余时间子弹该多大就多大。但是自机却不同,虽然都是自机,却有灵梦和魔理沙的区别,因此自机判定半径会有不同的数值。
那么代入到上述求偏导的公式中,将R1看作自机判定半径,而R2是子弹判定半径。当自机从灵梦换成魔理沙时,临界判定距离D会变化ΔD,这个ΔD也就是我们玩游戏时所感觉到的判定点大小差异。由之前偏导数的性质可以知道,当子弹半径R2越大时,ΔD越小,当R2越小时,ΔD越大。
举例来说,灵梦判定半径2,魔理沙判定半径3(正交圆判定中的半径)
米弹判定半径2
则灵梦对米弹判定的临界距离Dr = √(2^2+2^2)=2.83
魔理沙对米弹判定的临界距离Dm = √(3^2+2^2)=3.61
此时ΔD=Dm-Dr=3.61-2.83=0.78
大玉判定半径14
灵梦对大玉判定的临界距离Dr = √(2^2+14^2)=14.14
魔理沙大玉判定的临界距离Dm = √(3^2+14^2)=14.32
此时ΔD= Dm-Dr=14.32-14.14=0.18
可以看到,魔理沙和灵梦的判定大小差异,在面对大玉时并不明显,而面对米弹时非常明显。
再来看一下辉针城中子弹放大的情况。
此时自机判定不变,子弹变化。将自机半径看作R2,子弹半径看作R1,此时ΔD表示子弹放大后引起的判定临界距离变化。由先前的结论可以知道,R2越大,ΔD越小。也就是说,放大的子弹对魔理沙来说应该稍显友好。

具体计算一下看看。经过图片测量,上图中玉大约放大了3倍,按照中玉本身半径为8.5,放大3倍为25.5
对灵梦而言
放大前D1 = √(2^2+8.5^2) = 8.73
放大后D2 = √(2^2+25.5^2) = 25.58
ΔD=D2-D1=25.58-8.73=16.85
对魔理沙而言
放大前D1 = √(3^2+8.5^2) = 9.01
放大后D2 = √(3^2+25.5^2) = 25.67
ΔD= D2-D1=25.67-9.01=16.66
可以看到,子弹放大对魔理沙产生的影响比灵梦小,放大子弹会缩小魔理沙和灵梦的差距。换个角度想,其实也就是在面对大子弹时,魔理沙和灵梦的判定差异会变得不明显。其中放大后灵梦的25.58对魔理沙25.67,相差0.1都不到,两者判定大小差异几乎可以忽略了。
那么今天的科普差不多就到这里,我们得到了两个重要的结论
1.魔理沙在面对小子弹的时候更显得胖
2.没事不要用正交圆判定!
以下广告时间:
本系列过往文章将收录在弹幕音乐绘的哔哩哔哩兴趣圈中,欢迎关注
http://www.im9.com/community.html?community_id=12241
游戏《弹幕音乐绘》登陆steam绿光,各种求支持
http://steamcommunity.com/sharedfiles/filedetails/?id=886253524
上一次文章介绍了stg中常用的判定形状。其中,东方STG从TH11《东方地灵殿》开始采用的正交圆判定非常独特。本文就来分析一下正交圆判定所引出的一些问题。之所以将本文的编号写成了“点五”,是因为我觉得正交圆这个判定方法几乎没什么用处,除了我们的神主以外,应该没人会使用这个判定方法吧。。。
本文大量数据参考自 http://thwiki.cc/游戏攻略/STG判定数据
首先还是先看一下判定公式和形状,并和传统圆形判定做一个对比。
这里将D认为是两物体的临界判定距离,实际距离小于D时则相交,大于D则相离
传统圆形判定公式:
D^2=(r1+r2)^2或D=r1+r2
正交圆判定公式:
D^2=R1^2+R2^2
这两者的几何意义如下图所示,传统圆形判定临界状态是两圆相切,而正交圆判定的临界状态是两圆正交。

试想一下,假设自机与一个中玉判定

同样要达到这个判定效果,如果用传统圆形判定,按自机半径2,中玉半径5,则临界距离D=7
如果按正交圆判定,可以按自己半径2,中玉判定6.71,从而获得完全相同的效果。

如果使用正交圆判定代替圆形判定,对于自机判定半径一定的情况下,可以通过设定子弹的判定半径,来达到和圆形判定完全等效的结果。判定形状依然是圆形,只不过是半径数值比传统圆形大一些而已。
通过以上分析,正交圆和传统圆形判定是否可以完全等效呢?我认为事情并没有这么简单,因为自机的判定半径并不是不变的,众所周知,魔理沙比较胖,灵梦比较瘦,各自机判定半径数值不相等,而子弹的判定半径不会针对各个自机专门设定数值。那么这意味着什么,且看下面的分析。
以下需要用一下高等数学的知识,还没上大学的小伙伴也不用担心看不懂,过程不重要,后面会解释其结果的意义。
拿出上述判定公式
对于圆形
D^2=(r1+r2)^2或D=r1+r2
将其视为D关于r1、r2的函数,对r1求偏导
∂D/∂r1=1
很显然,临界距离D和中间任何一个r都是线性关系。
对于正交圆
D^2=R1^2+R2^2
对R1求偏导
以下我懒得输公式,就直接贴手写版了

这个结果首先说明,D和R1不是线性关系。
同时,当R2越大,D随R1的变化率就越小,R2越小,D随R1的变化率就越大。极端情况,当R2=0时,∂D/ ∂R1=1,这种情况下D与R1等比增长。其实想想也知道,此时D=R1
当R2->∞时,∂D/ ∂R1->0,因为此时R1几乎与D垂直,D不随R1变化而变化。
同时,还是对于D和R1的偏导数情况,当R2恒定时,可以看出R1较小时,D随R1的变化率较小,当R1较大时,D随R1的变化率较大。
其实从几何上更好理解

R1越大,R1与D的夹角θ越小,D随R1的变化率就大
类似的
R1越小,θ越大,D随R1的变化率就小;
R2越大,θ越大,D随R1的变化率就小;
R2越小,θ越小,D随R1的变化率就大
以上就是关于正交圆判定性质的分析,不管怎样,其实推导过程什么的不重要,关键是以上结论会带来什么实际影响。
这个问题可以从这个角度考虑,子弹的判定半径一般是不变的,小玉、中玉、大玉的半径是不会在游戏中发生改变的,除了辉针城里有一些小锤引起的子弹缩放,其余时间子弹该多大就多大。但是自机却不同,虽然都是自机,却有灵梦和魔理沙的区别,因此自机判定半径会有不同的数值。
那么代入到上述求偏导的公式中,将R1看作自机判定半径,而R2是子弹判定半径。当自机从灵梦换成魔理沙时,临界判定距离D会变化ΔD,这个ΔD也就是我们玩游戏时所感觉到的判定点大小差异。由之前偏导数的性质可以知道,当子弹半径R2越大时,ΔD越小,当R2越小时,ΔD越大。
举例来说,灵梦判定半径2,魔理沙判定半径3(正交圆判定中的半径)
米弹判定半径2
则灵梦对米弹判定的临界距离Dr = √(2^2+2^2)=2.83
魔理沙对米弹判定的临界距离Dm = √(3^2+2^2)=3.61
此时ΔD=Dm-Dr=3.61-2.83=0.78
大玉判定半径14
灵梦对大玉判定的临界距离Dr = √(2^2+14^2)=14.14
魔理沙大玉判定的临界距离Dm = √(3^2+14^2)=14.32
此时ΔD= Dm-Dr=14.32-14.14=0.18
可以看到,魔理沙和灵梦的判定大小差异,在面对大玉时并不明显,而面对米弹时非常明显。
再来看一下辉针城中子弹放大的情况。
此时自机判定不变,子弹变化。将自机半径看作R2,子弹半径看作R1,此时ΔD表示子弹放大后引起的判定临界距离变化。由先前的结论可以知道,R2越大,ΔD越小。也就是说,放大的子弹对魔理沙来说应该稍显友好。

具体计算一下看看。经过图片测量,上图中玉大约放大了3倍,按照中玉本身半径为8.5,放大3倍为25.5
对灵梦而言
放大前D1 = √(2^2+8.5^2) = 8.73
放大后D2 = √(2^2+25.5^2) = 25.58
ΔD=D2-D1=25.58-8.73=16.85
对魔理沙而言
放大前D1 = √(3^2+8.5^2) = 9.01
放大后D2 = √(3^2+25.5^2) = 25.67
ΔD= D2-D1=25.67-9.01=16.66
可以看到,子弹放大对魔理沙产生的影响比灵梦小,放大子弹会缩小魔理沙和灵梦的差距。换个角度想,其实也就是在面对大子弹时,魔理沙和灵梦的判定差异会变得不明显。其中放大后灵梦的25.58对魔理沙25.67,相差0.1都不到,两者判定大小差异几乎可以忽略了。
那么今天的科普差不多就到这里,我们得到了两个重要的结论
1.魔理沙在面对小子弹的时候更显得胖
2.没事不要用正交圆判定!
以下广告时间:
本系列过往文章将收录在弹幕音乐绘的哔哩哔哩兴趣圈中,欢迎关注
http://www.im9.com/community.html?community_id=12241
游戏《弹幕音乐绘》登陆steam绿光,各种求支持
http://steamcommunity.com/sharedfiles/filedetails/?id=886253524