• ||
    제스처 입력 - 주요 알고리즘 ( 안드로이드 기반 풀터치 스크린 제스처 IME )
  • 한현우(20기) 2010/06/11
  •  

  • 본 시스템에서 제스처를 입력 할 시 그 데이터를 알기위하여 필요한 값은 크게 3가지, 시점, 종점, 체크타임 으로 구성된다.

    위의 3가지만 올바른 값을 알 수 있다면 방향에 따른 제스처의 분석은 간단하게 해결 할 수 있다.

     

     

    (1) 제스처 입력 알고리즘 기술

    시점을 중심으로 종점까지의 기준방향에 대한 각도를 구하여 현재 방향을 체크하게 되는데, 여기서 기준방향이라는 것은 플랫폼에 따라 다르다.

    Vs C++은 스크린 오른쪽방향, 즉 +X방향이 기준방향으로 설정이 되어있고 개발중인 본 안드로이드(Java)에서는 기준방향이 -X방향으로 설정되어있기 때문에 각도를 이용한 제스처 구현시 주의하여야 한다.

    입력 완료한 후 체킹하는 방식이 아닌 입력도중에 체크하는 방식을 구현하기 위해서 ( 중간 체크타임을 얻고자 하는 방법 ) 실시간으로 이미 입력된이전의 Point들과의 각도의 변화량을 계산한다. 이 순간의 변화량이 지정한 크기를 벗어나게 되면 하나의 체크타임으로 설정이 되는데,팬을 이용하는것이 아닌 손가락으로 제스처를 입력하게 되므로 바로 이전점을 시점으로 잡고 계산을 하게되면 변화량의 값이 의도하지 않게 크게나오는 경우가 많다.

    이 때문에 입력 배열의 바로 앞지점이 아닌 어느정도의 거리를 둔 점을 시점으로 두고 계산하여야한다.

    ( 개발중인 시스템의 FPS를 참고하여 어느정도의 거리를 앞으로 두고 계산할 것인지를 지정하여야 올바른 값을 얻을수 있다. )

     

    (2) 각도값

    각도값은 Point의 위치값으로부터 구하게 되는데 DotProduct를 이용하여 구할 수 있으며, 같은방법으로 Arccos를 이용하여서도 구할 수 있다.

    이때 유의할 사항은 Cos그래프를 살펴보게 되면 알 수 있는데 이는 x와 y의 대응이 1:1로 이루어 지지 않기때문에 경우를 구분해 주어야 한다.

    cos graph

     


  •  
  • TRACKBACK : http://www.swssm.org/trackback.php?id=390
  •  
  •  
  • [prev] ... 1 2 3 4 5 6 7 8 9 10 ... [next]
 
삼성전자 소프트웨어 멤버십
과제 Tech Note 입니다.

최근 글