算法击键动态

时间:2016-01-08 20:36:25

标签: algorithm math dynamic machine-learning keyboard

我有一个第三方键盘应用程序是我正在尝试从我拥有的关键地图数据文件中理解的算法。它监视您敲击键盘的方式,然后调整幕后的可点击区域,以便更准确地接受用户输入。我现在正试图在我正在制作的小游戏中模仿这个键盘概念。

这是键盘应用呈现的可点击字符映射: enter image description here

以下是键盘字母V

的字符映射示例
{
"v" : 
{
    "characters" : [ "v" ],
    "feature-threshold-multiplier" : 1.0,
    "initial-scale-multiplier" : 1.0,
    "mean" : 
    {
        "dof" : 40,
        "mode" : [ 210.0367889404297, 138.3223266601562 ] 
    },
    "precision" : 
    {
        "dof" : 40,
        "mode" : 
        [
            0.003064915072172880,
            -0.0009184600203298032,
            -0.0009184600203298032, 
            0.006329041905701160
        ]
    },
    "prior-mean" : [ 207.0, 142.50 ],
    "prior-precision" : [ 0.004667554982006550, 0.0, 0.0, 0.004667554982006550 ]
}
}

问题

我现在要弄清楚的是,数据集的哪个部分决定了可点击区域的大小以及哪个部分决定了旋转。

我的发现

我注意到的一些事情可能有助于其他人帮助我理解密钥及其价值与实际相关的内容:

  1. 我发现precision - > mode包含两个值,每个字符映射始终相同。
  2. 我注意到dofmean都有mode个密钥 mean数组,它们总是一样的。
  3. 到目前为止,一位朋友已经能够找出哪个关键值对于每个可点击密钥的定位有何意义。

    mode - > positioning包含x和y位置。 此链接显示给定角色数据集的代码输出呈现。

    http://codepen.io/martinlindhe/pen/yebpgO

    您会注意到输出与下面显示的可点击键映射的确切POST匹配。

1 个答案:

答案 0 :(得分:0)

我只能在这里猜测,但我的赌注是:

pos = 210.0367889404297, 138.3223266601562

位置(角或中心)和

 0.0030649150721728800,-0.0009184600203298032
-0.0009184600203298032, 0.0063290419057011600

是2 x 2D基矢量(因此,点击区域的大小和方向)和size = 40(或多或少与位置匹配)。我看到2种可能的布局(行主要或列主要),但是您的数据是对称的,因此无法分辨两者是哪一种:

 u = 40 * ( 0.0030649150721728800,-0.0009184600203298032)
 v = 40 * (-0.0009184600203298032, 0.0063290419057011600)

由于您未提供有关坐标系的任何信息,并且位置根本不与图像匹配(您发布了最有可能的缩放图像),因此我无法验证其中任何一个。唯一可见的是u~2大小的v倍,并且这是 V 键(我假设),然后我看到了这样(从您提供的所有数据中推断):

V key layout

您可以看到u向量已被镜像(上帝知道原因)。

要进行验证,您不仅应该检查/比较单个键。要获得缩放比例,我会选择W,Z,M,O,因为它们会形成几乎覆盖整个键盘的几乎一个矩形...并且还要检查旋转角度不同的键以验证怪异的镜像。