从反向线性标尺计算径向速度

时间:2013-10-24 23:24:37

标签: algorithm math logic

我的用户输入的整数值为1到50 我想,让我想象一下转动的针,就像它是一个钟 该转弯的速度取决于每帧移动的弧度增量 所以,如果我有一个PI / 2的速度,针每一帧转半圈 我得出结论,可能的速度应该在PI / 8(最快)和PI / 256(最慢)之间。

我正在尝试构建一种算法,将1(最慢)和50(最快)的用户输入转换为PI / 256和PI / 8(最大值50是任意的,可以是其他的);显然,两者之间的数字应该是反向对应的。

我需要的是一个类似的公式:

delta = userInput * (.............)

我已经尝试了几个小时,如果有人能帮助我,我将非常感激。

2 个答案:

答案 0 :(得分:2)

求解线方程:y = m * x + b。即,插入两点得到两个方程式,其中m和b为未知数,然后求解m和b。

答案 1 :(得分:1)

(请参阅我的回答here以获得有关其工作原理的更详细说明。)

这对于评论来说只是稍微太长了。两个尺度是否在方向上是一致的并不重要,尽管你的:你说1(最慢)对应pi/256(最慢),{{1 (最快)对应50(最快)。 pi/81 < 50

所以,如果这是正确的顺序:

pi/256 < pi/8

>>> a0, a1 = 1., 50. >>> b0, b1 = pi/256, pi/8 >>> def rescale(x): ... return ((x-a0)/(a1-a0)) * (b1-b0) + b0 ... >>> rescale(1) 0.01227184630308513 >>> rescale(1) == pi/256 True >>> >>> rescale(50) 0.39269908169872414 >>> rescale(50) == pi/8 True 靠近中间的地方:

25

如果您希望>>> rescale(25) 0.198603553435643 代表最快的速度,那么只需翻转1b0

b1

该公式继续适用。