【Re:PhiEdit / RPE】 曲线轨迹教程 ·【四】父线

这一篇教程,我愿称之为RPE群友最喜欢的一集。
父线的出现给谱师们提供了极大的便利,其可以极大幅度减少谱师的工作量,而且操作简便易上手。
本篇教程将较为全面地介绍父线,也就是说,这篇教程的内容将不局限于曲线轨迹。
让我们开始吧!

【父线功能与其原理】
父线功能的位置其实是比较隐蔽的,如下图,点击“...”进入扩展菜单。


如图,在这里填入一个数 a ,表示这根线以 a 号线为父线。不要填超界了哦!
父线的本质是换系,也就是让子线的坐标原点从屏幕正中心的 (0,0) 变为父线的判定线锚点,同时让子线的 x、y 轴变为父线本身与垂直于父线且经过父线锚点的直线。父线的作用仅对 movex 和 movey 生效,不对 rotate 起作用,所以写切线的角度时仍然需要用到生成曲线轨迹这一功能。(逃不过上一篇滴!)
以 -30 度扫线特效为例:

9号线的位置信息:movex 0 | movey 0 | rotate -30.0

父线的操作在这里可以形象地理解为:让子线的坐标轴绕原点(父线锚点位于初始坐标系的原点上,因此这里说谁都行)逆时针旋转了 30 度,如下面的两张图。


所以,子线在制谱器中的定位方式就由自己的 movex 与 movey,变成了父线的 movex、movey(决定子线使用的坐标系(在这里我们称为新坐标系)原点关于初始坐标系的位置)、rotate(决定新坐标系x、y轴的朝向),和子线的 movey(子线到新坐标系原点的距离。为什么没有子线的 movex 呢?马上我就来解释!)
注意,父线是永久绑定的行为,你不能希望它在谱面的前半段绑定,后半段又将其解除。你只能使其在全谱范围内绑定或不绑定。如果你的表演线不够用了,那就新建吧!

【父线的实际用途】
最直接的用途有两个,第一个非沿初始坐标轴方向的扫线已经在上面提到过了,而第二个就是用来顶替曲线轨迹,更加快捷简便地生成圆和螺旋线一类的轨迹。
例如,我们现在需要一个以 (0,-280) 为圆心,半径为 600 的一段圆弧,效果如下图。(采用生成曲线轨迹功能实现,使用的是 RPE 1.2.1,因此没有角度方程一栏)

可以看到,若我们使用生成曲线轨迹功能,我们需要写出两个较为繁琐的参数方程,且如果我们需要大量使用这类特效,偏不巧每次的方程还不一样,那么使用生成曲线轨迹会相当麻烦。但是,现在我们可以使用父线功能来实现一样的效果。
操作如下:
一、将该判定线(14)绑定一条父线,此处以 22 为父线。
二、初始化 14 的 movey 为 600,alpha 为 225;22 的 movex 为 0,movey 为 -280。
三、在 22 在 242:0/1 到 244:0/1 期间执行一个线性变化(缓动类型为 1)的 rotate 事件,角度变化为 -30 到 30。如果你需要让 14 沿轨迹切线方向运动,那么就让 14 也在 242:0/1 到 244:0/1 期间执行一个线性变化(缓动类型为 1)的 rotate 事件,角度变化为 -30 到 30。
效果如图:

螺旋线的实现类似。例如,我们现在需要一个以 (0,-280) 为中心,初始半径为 600 、以 out quad 缓动缩小至 200 的螺旋线,效果如下图,同样采用生成曲线轨迹功能生成。

这方程看着就头疼!但是现在我们有父线了!
一、将该判定线(14)绑定一条父线,此处以 22 为父线。
二、初始化 14 的 movey 为 600,alpha 为 225;22 的 movex 为 0,movey 为 -280。
三、让 22 在 242:0/1 到 244:0/1 期间执行一个线性变化(缓动类型为 1)的 rotate 事件,角度变化为 -30 到 90。让 14 在 242:0/1 到 244:0/1 期间执行一个线性变化(缓动类型为 1)的 movey 事件,值的变化为 600 到 200。
如果你需要让 14 沿轨迹切线方向运动,那么就让 14 也在 242:0/1 到 244:0/1 期间执行一个线性变化(缓动类型为 1)的 rotate 事件,角度变化为 -30 到 120。

由于叠加运动的存在,螺旋线的切线需要计算,并不是按圆轨迹的切线写的。上述方法中描述的切线写法仅为近似结果。计算方法参见上一篇教程!
最后我来解释一下子线 movex 不起决定性作用的原因。
其实只是因为在二维平面内,描述平面上的一个点有两种方法,第一种是我们熟知的笛卡尔坐标系(直角坐标系和斜坐标系的统称,更常用的是平面直角坐标系),另一种则是相对陌生的极坐标系。笛卡尔坐标系采用 (x,y) 的方式描述一个点相对原点的位置,其中 x 与 y 均描述的是某点与原点沿轴的距离关系,这样可以确保任意不重合的点具有不同的坐标,也即每个点都有唯一确定的坐标;而极坐标系采用 (ρ,θ) 的方式描述一个点相对原点的位置,其中 ρ 是描述某点到原点的欧式距离,θ 则描述的是某点与 +x 轴的夹角大小。这样同样可以确保任意不重合的点具有不同的坐标,即每个点也都有唯一确定的坐标。常规写法下我们使用的是直角坐标系,而使用父线则更像极坐标系的写法。由于极坐标系只需要一个参量表示欧式距离,movey 就可以做到这一点,即使是在原基础上使用了子线 movex,其效果也可以被只使用父线 movex/y 和 rotate 与子线 movey 和 rotate 顶替,而且表达一般还更加简洁。
这就是我们只要子线 movey 的原因啦!

说了这么多,感受到父线的便捷了吗?快去试试吧!
本教程中的动图与图片均为我使用 Re:PhiEdit 制作。