• 【杂项】手动进行软件触摸校准,简单的区间映射。


    客户需要,做一下说明,原理如下。

    static int map(int x, int in_min, int in_max, int out_min, int out_max)
    {
      return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
    }
    

    若显示屏幕尺寸 x y w h 为 0, 0, 640, 480

    而触摸屏幕可能不完全等于显示屏大小,例如可能为 10, 0, 680, 460

    假设输入点 X = 320 则可以通过公式 (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min 进行映射

    则 in_min, int_max, out_min, out_max = 10, 680, 0, 640 结果为 (320 - 10) * (640 - 0) / (680 - 10) + 0 = 296 。

    即可知 触摸屏上的 320 等于实际显示屏上的 296 , 则 Y 轴 同理。

    图例如下:

    所以你要找到触摸屏的最大/最小值,配合显示屏进行坐标映射。

    每次校准后,将其保存,供下次读取即可。

    该方法只是线性简单的校准方法,不能很好的表现出触摸屏的特性,如果有更复杂的精度要求,则采用更复杂的公式,依葫芦画瓢即可。

  • 相关阅读:
    HDU 4393 Throw nails(贪心加模拟,追及问题)
    【Add Two Numbers】
    【Single Num II】cpp
    【Single Number】cpp
    【Candy】cpp
    【Gas Station】cpp
    【Set Matrix Zeros】cpp
    【Gray Code】cpp
    【Climbing Stairs】cpp
    【Plus One】cpp
  • 原文地址:https://www.cnblogs.com/juwan/p/15102676.html
Copyright © 2020-2023  润新知