固定角度旋转单位函数的解释

固定角度的旋转函数的理解 —— Konux
固定角度的旋转函数有以下三种:

我们这里讲后两种,因为第一种函数很简单,而后两种函数要想彻底理解就不是很容易
下面我们讲一下关于旋转方面基础的三个定义


定义一:单位旋转角度
如下图建系:

单位旋转角度是一个实数,以竖直向上为0°,随逆时针旋转一圈,值逐渐增加到无限趋近于360°(但取不到)
比如向上为0°,向左为90°,向下为180°,向右为270°,所以上图刺的单位旋转角度就是90°


定义二:旋转偏移
旋转偏移即旋转前后的角度变化值,如下图:

上图中,由90°逆时针转到135°,偏移就是45°
90°顺时针转到135°,偏移为-315°
即逆时针转动,偏移为正;顺时针转动,偏移为负(逆正顺负)

定义三:旋转速度
旋转速度的公式和直线上的速度公式类似:
旋转速度=旋转角度偏移/旋转时间(若时间取1s,那么旋转速度可以理解为1s内的旋转角度偏移量),由于角度偏移存在正负性,所以旋转速度也有正负性,逆时针转动值为正,顺时针转动值为负
比如速度180表示1s内逆时针转动半圈(180°),速度-360表示1s内顺时针转动一圈(360°)

函数一:旋转(指定时间、固定角度)

此函数的第一个参数是指定旋转的单位,非常简单,我们主要看后面两个参数,时间和角度。
函数中的时间可以是正数、0、负数
当时间为正数时:单位会以该时间旋转到某固定角度后停止
当时间为0时:单位会以1s的时间旋转到某固定角度
当时间为负数时:单位会持续旋转,不会停止

一般来说,单位旋转的方向(逆时针或顺时针)由旋转速度的正负性决定,下面给出计算公式:

旋转速度 = 旋转角度偏移 / 时间 = (函数固定角度 - 单位旋转角度) / 时间
其中时间为0时可等价为1进行计算,此公式在时间为负时仍然成立


比如以下图为例:


函数中的固定角度为-180°,单位是向左的,所以单位旋转角度为90°,旋转角度偏移 = -180°-90° = -270°,旋转速度 = -270°/2s = -135°/s,这速度是个负数,所以这个刺会以每秒135°顺时针旋转到180°,就是下面这样:


再比如:


旋转速度=(720-180)°/1s=540°/s,其中偏移量为540°,表示逆时针旋转了540°,即360°+180°,是一圈半
若将时间改为-1秒:

那么旋转速度=-540°,单位做顺时针持续旋转,每秒旋转540°

以上我们已经知道了如何通过函数中的时间和固定角度计算此函数对单位的旋转效果,那么反过来,我们也可以根据需求来计算函数里的参数。

将旋转速度的公式进行变形,就能得到:
函数中的固定角度 = 旋转速度*时间 + 单位旋转角度

1.当需要持续旋转时,设置时间为负数即可,但由于持续旋转时时间是无用参数,所以可以将其默认设置为-1,此时函数中的固定角度的计算式就变为了:旋转速度*(-1s)+单位旋转角度 = - 每秒的旋转偏移角度 + 单位旋转角度

那么根据这个结论,我们做个小练习:

使刺顺时针以每秒转一圈的速度持续旋转
首先时间设置为-1秒,由于是每秒顺时针转一圈,所以易得每秒的旋转偏移为-360°,再由刺的摆放方向得知单位旋转角度为270°,带入公式算得固定角度=-(-360°) + 270° = 630°
所以函数应该写为:

2.当需要固定时间旋转到某个固定角度时,时间为正数,同样根据公式:
函数中的固定角度 = 旋转速度*时间 + 单位旋转角度
由于时间是正数,所以旋转速度*时间=旋转偏移,公式简化为:
固定角度 = 总旋转偏移 + 单位旋转角度

下面举个例子:

我们希望这个刺在2秒内逆时针旋转一圈半到90°的位置
这里时间已经确定,要求的只有固定角度,由于是旋转一圈半,且是逆时针,旋转偏移就是360°+180°=540°
根据公式得固定角度 = 540° + 270° = 810°,所以函数应写为:


函数二:旋转(指定速度、固定角度)

此函数重要的两个参数为速度和固定角度,由于速度决定了单位的旋转的方向和旋转的角速率,而此处的固定角度只是作为单位停止的条件

同理,此处的固定角度 = 总旋转偏移 + 单位旋转角度
注意,速度参数和旋转偏移的正负性都能表示旋转方向,所以如果这两个参数的正负性不一致,就会导致冲突,致使单位按照速度参数进行持续旋转

上例子:

使以上的刺以360的速率顺时针旋转3/4圈至180°
由于是顺时针,所以速度为负数,应填入-360,顺时针旋转3/4圈,也就是旋转偏移-270°,单位旋转角度为90°,所以固定角度=-270°+90°=-180°,函数应该写为:

此处我们发现,偏移和旋转的符号都是负数,表示顺时针转动,所以固定角度 = 负数+90°,所以固定角度一定是小于90°的数,如果大于90°,则刺会持续的以速度参数进行转动:

就像上面这样,此函数并不能表示尖刺顺时针以-360°旋转到180°,这种奇怪的情况也被很多人认为是bug,实际上这是此函数参数之间冲突导致的特性,这种特性是有用的


那么此教程在此就结束了,希望各位能正确认识上述的两个函数,并有能力去合理的运用