您当前的位置:首页 >> 专题 >  
世界快报:【Re:PhiEdit / RPE】 曲线轨迹教程 ·【三】切线、螺旋线
来源: 哔哩哔哩      时间:2023-01-26 23:52:55

# 在这里做一个关于父线芝士的预告!这篇写完之后我会对父线进行讲解!

【切线】


(资料图片)

整了这么些轨迹,有同学可能会发现,我们不只是希望判定线的锚点能够沿曲线轨迹运动,我们还希望判定线可以沿切线方向贴合曲线运动。

但是这玩意挺复杂的()

对于一般的圆弧或者是圆,这个问题还好解决。这里提供常规解法:

你可以将整个轨迹的圆心标注出来,将圆弧的起点与终点和圆心相连,如图。

然后,我们作出它的切线。我们令B为起点,C为终点,那么我们可以得到  与  水平方向的夹角 α 与 β ,如上图。接下来我们添加一个rotate事件,使其开始值为 α ,结束值为 β,使用与运动轨迹相同的缓动,即可完成切线的制作,如下图。

(方程:400*cos(0.5*Pi*$t$+0.25*Pi)、400*sin(0.5*Pi*$t$+0.25*Pi),分别使用缓动1与2)

(下图你可以选择性阅读,可以直接跳到后文的螺旋线,这个复杂的东西会在父线的讲解中用简单的方法解决。如果你头铁,你也可以读完())

【螺旋线】

螺旋线同样是一个很常用的东西,它有两种实现方法。第一种是使用多个半圆进行拼接,第二种是直接修改参数方程。在此我会以第二种方法为主(第一种应该很好想到罢())。

当你只需要匀速螺旋时,第一种方法可以适用,但是对于整体变速的螺旋运动,半圆拼接会变得不方便。

想象一下,螺旋线可以理解为一个点沿着一个半径不断缩小的“圆”运动,如图。

那这就好办了,我们可以直接在原本的x y方程的基础上乘一个系数 (1-$t$),使得这个圆的“半径”——A(A sin(ωx+φ)+b)不断缩小。

而且,这个系数不仅可以是(1-$t$),还可以是 (1-sin($t$))、(1-$t$^2) 等系数,这可以使这个圆的半径以不同的缓动缩小。下图是上述三个系数的对比。

非常令人高兴的是,由于这些轨迹都是同一个圆的半径不断缩小产生的,这些轨迹的切线写法与普通的圆是一致的!也就是说,它的切线所使用的缓动和上文的圆一样,同样只取决于x/y侧的时间缓动,与你选用的半径缩小的参数(1-$t$、1-sin($t$)、1-$t$^2)无关。

如图,以1-sin($t$)为例。上图中1-sin($t$)的结束轨迹稍微有点渲染问题,实际上其切线角度是0°。

好了,快去试试吧!

本教程中的动图与图片均为我使用 Desmos 和 GeoGebra 制作。

当然也包括 Re:PhiEdit 。

上一篇:

下一篇:

X 关闭

X 关闭