将角度映射到 0-1 范围

Map angles to a 0-1 range

假设您有两个角,并将它们标记为 0 和 1。然后您有另一个角 x。你也知道你是顺时针还是逆时针从角度 0 到角度 1。你如何计算一个可以描述第三个角度的数字?

示例:

Angle at 0 Angle at 1 Rotation Direction Target Angle Mapped number (x)
90° CCW 60° 2/3
90° CW 60° 1/3
180° CW 90° 1.5
180° CCW 90° 0.5

我遇到的问题:

Check下个办法:

def ratio(x, a, b, dircw = False):
    if dircw:
        if x > a:
            x -= 360
        if b > a:
            b -= 360
    else:
        if b < a:
            b += 360
        if x < a:
            x += 360

    return (x-a)/(b-a)


print(ratio(60, 0, 90))
print(ratio(60, 0, 90, True))
print(ratio(60, 90, 0, True))
print(ratio(90, 0, 180, True))
print(ratio(90, 0, 180))

0.6666666666666666
1.1111111111111112
0.3333333333333333
1.5
0.5

我们考虑求解线性方程(求解linear interpolation的逆)

x = a*(1-t) + b*t

未知 t.

我们必须进行标准化以在两个方向上以循环方式提供 b after a - 因此 b+- 更正。

为了只得到积极的结果,我们也标准化 x