【问题标题】:Inverting one joystick value to get an average sensitivity of two joysticks反转一个操纵杆值以获得两个操纵杆的平均灵敏度
【发布时间】:2014-03-29 16:15:23
【问题描述】:

我正在尝试获得两个操纵杆 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 范围内的平均灵敏度水平,当一个方向计数但另一个计数另一个方向时..

我想最简单的方法是让它们都以相同的方式计算。

例如,如果JoyY 被按下到100(down) 并且JoyZ 被按下到0(up) 我所要做的就是找到一个或另一个的反转值(沿相同方向计数),然后使用与以前相同的等式

newJoyZ:= *some equation goes here..*
avgSens:= (JoyY + newJoyZ)/2

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

我尝试过(JoyY + ((100-JoyZ)*2))/2 之类的东西,但结果一团糟。

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

【问题讨论】:

    标签: math autohotkey joystick


    【解决方案1】:

    我要做的是将中性区域更改为 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
    

    非常简单!希望对您有所帮助。

    【讨论】:

    • 那个,嗯,不这样做。不再是 0 和 100 平均为 50(中性),而是 -100 和 100 平均为 0(中性)。
    • 它确实给出了两个 y 轴的平均值,即使一个轴满了而另一个轴满了。如果它需要在同一个基础上,它可以用相同的公式再次转换。
    • 据我了解,他想要与空档的绝对距离,因此如果两个操纵杆都远离空档,则平均值远非空档。我现在已经在自己的答案中展示了我的理解。
    【解决方案2】:

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

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

    上面会给你一个从 0 到 50 的数字。0 都是中性的。 50 都离中性点很远(都为 0 或 100)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多