跳至內容

「物量与判定机制」:修訂間差異

移除 11 位元組 、​ 2024年12月5日 (星期四)
修改bpm计算内容;调整公式显示
(增加警告内容)
(修改bpm计算内容;调整公式显示)
行 36: 行 36:
====BPM计算====
====BPM计算====


 对于其他情况,首先计算长键起始时间戳所处的实际BPM(bpm_real):
 对于其他情况,首先 根据起始时间戳所处的timing区间的BPM(bpm) 计算长键起始时间戳所处的实际BPM(bpm_real):


<pre>bpm_real = bpm * density</pre>
*若bpm的绝对值大于等于256(|bpm| &gt;= 256),则 bpm_real = |bpm| / 2;
其中bpm为起始时间戳所处的timing区间的BPM,density为判定点密度因数(TimingPointDensityFactor)
*否则,bpm_real = |bpm|


 而后,计算计算用BPM(bpm_calc):
 而后,计算计算用BPM(bpm_calc):


*若bpm_real的绝对值大于等于255(|bpm_real| &gt;= 255),则bpm_calc = |bpm_real| / 2;
bpm_calc = bpm_real * density
*否则,bpm_calc = |bpm_real|
 
其中density为判定点密度因数(TimingPointDensityFactor)


====长键实际物量计算====
====长键实际物量计算====
行 56: 行 57:
 若ln_beats严格小于1.5,则长键物件有1物量;若ln_beats大于等于1.5,则物量(note_count)按如下方法计算:
 若ln_beats严格小于1.5,则长键物件有1物量;若ln_beats大于等于1.5,则物量(note_count)按如下方法计算:


note_count = [ln_beats * 2] - 1
note_count = [ln_beats * 2] - 1


 其中方括号代表向下取整。
 其中方括号代表向下取整。
行 85: 行 86:
 下文在计算判定点时,会使用判定点基于长键起始时间戳的'''判定点相对拍数(judge_beat)''' 来表示。其与'''判定点时间戳(judge_time)''' 的关系为:
 下文在计算判定点时,会使用判定点基于长键起始时间戳的'''判定点相对拍数(judge_beat)''' 来表示。其与'''判定点时间戳(judge_time)''' 的关系为:


judge_beat = (judge_time - ln_start) / bpm_calc
judge_beat = (judge_time - ln_start) / bpm_calc


 其中ln_start为长键的起始时间戳。
 其中ln_start为长键的起始时间戳。
行 93: 行 94:
*当ln_beats &lt; 0.5时,judge_beat = 0。
*当ln_beats &lt; 0.5时,judge_beat = 0。
*当0.5 &lt;= ln_beats &lt;= 1时,judge_beat = (ln_beats - 0.5) / 2。
*当0.5 &lt;= ln_beats &lt;= 1时,judge_beat = (ln_beats - 0.5) / 2。
*当ln_beats &gt; 1时,对于长键的第n个判定点,其相对拍 数judge_beat_n = (n / 2) - 0.25。
*当ln_beats &gt; 1时,对于长键的第n个判定点,其相对拍 数 judge_beat_n = (n / 2) - 0.25。


===Arc物件的首尾连接的判定点时间偏移===
===Arc物件的首尾连接的判定点时间偏移===
行 105: 行 106:
**若其ln_beats &lt; 1,则不变;
**若其ln_beats &lt; 1,则不变;
**对于其他情况:
**对于其他情况:
**#计算最大的比ln_beats小的0.5的整数倍 拍im_beats = [ln_beats * 2] / 2,其中方括号表示向下取整;
**#计算最大的比ln_beats小的0.5的整数倍 拍 im_beats = [ln_beats * 2] / 2,其中方括号表示向下取整;
**#计算im_beats对应的时 长im_len = im_beats * 60000 / bpm_calc;
**#计算im_beats对应的时 长 im_len = im_beats * 60000 / bpm_calc;
**#如 果note_len - im_len &lt;= 1,则将最后一个判定点移动至倒数第二个判定点的位置;否则保持不变。
**#如 果 note_len - im_len &lt;= 1,则将最后一个判定点移动至倒数第二个判定点的位置;否则保持不变。


==判定区间计算机制==
==判定区间计算机制==
14

次編輯