反转一个操纵杆值以获得两个操纵杆的平均灵敏度

时间:2014-03-29 16:15:24

标签: math autohotkey joystick

我试图获得两个操纵杆Y轴之间的平均灵敏度水平。

完全按下 UP 的值为0
完全按下 DOWN 的值为100

(所以我基​​本上使用的是百分比)

中性区域(未按下操纵杆时)的值为50 (with a padding of 3, so..)

UP 的中性区域以47结束 DOWN 的中性区域以53

结束

我可以通过使用以下等式找到两根木棒被一起向上或向下按压时的平均灵敏度:

avgSens:= (JoyY + JoyZ)/2

这两个棒值都指向相同的方向,所以这里没有问题。

当一根手杖被按下但另一根按下时,我的问题就开始了。 我希望找到0 to 4753 to 100范围内的平均敏感度级别,当一个计算一个方向但另一个计算另一个方向时..

我认为最简单的方法就是让它们都以同样的方式计算。

例如,如果JoyY100(down)按下,JoyZ0(up)按下newJoyZ:= *some equation goes here..* avgSens:= (JoyY + newJoyZ)/2 我所要做的就是找到一个或另一个的倒置值(沿同一方向计数),然后使用与之前相同的等式

(JoyY + ((100-JoyZ)*2))/2

但是对于我的生活,我无法弄清楚如何找到100的倒置百分比。

我尝试过像{{1}}这样的事情,这只是一个可怕的混乱。

如果有必要,我很乐意提供示例代码或更多信息, 请放轻松我,我的数学很糟糕......并且提前感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:2)

我要做的是将中性区域更改为0,然后在两个操纵杆上完全向下将为100并且完全为-100。然后,如果一个是满的(100)而另一个是满的(-100),平均值将为0.希望这会有所帮助。

<强>更新

我经过一些测试后扩大了我的答案。首先需要做的是将两个Y值转换为我提到的格式,即100全下,0到中性,-100到满。你可以用这个简单的公式来做到这一点:

NewyValueJoy1 = (ActualYValue-50)*2

所以对于一个操纵杆你会得到:

如果已满(100),则得到(100-50)* 2 = 100。

在中立(50)你得到(50-50)* 2 = 0

如果满(0),则得到(0-50)* 2 = -100

因此,一旦使用两个操纵杆的值进行此转换,您就可以执行以下操作:

AverageYValue = (NewyValueJoy1+NewyValueJoy2) / 2

很简单!希望这会对你有所帮助。

答案 1 :(得分:1)

您正在寻找abs()http://www.autohotkey.com/docs/Functions.htm#Abs

avgSens:= (abs(JoyY-50) + abs(JoyZ-50))/2

上面会给你一个从0到50的数字.0都是中立的。 50远离中性(无论是0还是100)。