티스토리 뷰

1. 운동량 계산 방식


운동량을 계산하기 위해서 시간과 거리에 대한 기준을 두고 계산을 합니다.

예를 들어250ms 동안 100pt를 이동하면 운동량은 500pt가 됩니다. (여기에 질량을 이용한 가속도를 추가하셔도 괜찮을 것 같습니다.)

따라서, 운동량 P는 다음과 같은 선언을 기준으로

#define FLICK_BASE_TIME_GAP 250

#define FLICK_BASE_DISTANCE_GAP 100

#define FLICK_BASE_MOVE_DISTANCE 500


다음과 같이 계산이 가능합니다.


// FLICK_BASE_DISTANCE_GAP : moving_distance = FLICK_BASE_MOVE_DISTANCE : P 가 성립하므로

P= (moving_distance*FLICK_BASE_MOVE_DISTANCE)/FLICK_BASE_DISTANCE_GAP;

// 위와 같은 방법으로 FLICK_BASE_TIME_GAP : moving_time = FLICK_BASE_DISTANCE_GAP : P 가 성립하므로

P = P*FLICK_BASE_TIME_GAP/moving_time;


2. 마찰력 계산 방식

총 운동량이 계산되면 마찰력을 곱해서 시간에 따라 속도를 감속 시킬 수 있습니다.

다음과 같이 마찰 계수와 최대 마찰 계수를 선언하고

#define COEFFICIENT_OF_FRICTION 50

#define MAX_COEFFICIENT_OF_FRICTION 1000


다음 식을 수행하면, 마칠력이 적용된 힘을 얻을 수 있습니다.

P = P*( MAX_COEFFICIENT_OF_FRICTION  - COEFFICIENT_OF_FRICTION)/MAX_COEFFICIENT_OF_FRICTION;


3. 유효 이동 거리 및 유효 이동 시간 구하는 방법

정전압 터치 패널이 아닌 접점식 터치 패널은, 손가락으로 이용할 경우, 원하는 형태로 터치 event를 받아들이지 못하는 경우가 많습니다.

따라서 다음과 같은 조건을 두고 전달되는 이벤트를 계산해서 유효 이동 거리와 유효 이동 시간을 구합니다.


1)마지막으로 touch up 이벤트의 좌표는 무시한다. (손가락을 이용하여 한 방향으로 긁으면, 대부분 touch up event의 좌표는 마지막 move 이벤트 좌표를 기준으로 전체 방향성의 반대 방향의 위치로 전달 되게 됩니다. 이는 손가락 접점이 넓기 때문에 발생하는 현상입니다.)

2)표본 수집 시간을 정해 놓습니다. 최대 수집 시간을 500ms로 설정하면, 마지막으로 발생한 이벤트의 시간에서 500ms 이전의 이벤트들은 무시하도록 합니다.

3)표본 수집 이벤트 개수를 정합니다. 시작 점과 도착 점을 수집하기 위한 최대 이벤트 검색 개수를 정해 놓습니다. 만약 표본 수집 최대 개수를 10으로 정하면 마지막 이벤트부터 최대 10개 까지의 이벤트만을 계산 공식에 반영하도록 합니다.

4)접점 방식은 사용자가 계속 누르고 있다고 생각하나, touch uptouch down이 굉장이 짧은 시간 안에 여러 번이 발생할 수 있습니다. 이에 대한 skip 프로세스를 설정해주어야 하는데, skip invterval300ms로 주면, 마지막 touch up 이벤트의 발생 시간을 기준으로 300ms 이내에 발생하는 touch downup 이벤트는 무시하도록 하는 조건을 주는 것이 좋은 것 같습니다.

5)마지막으로 표본으로 사용할 수 있는 이벤트의 개수가 1개일 경우, 2개일 경우, 3개일 경우, 그 이상일 경우로 분리하여 이동 시간과 거리를 계산하는 방식을 따로 구현하는 것이 좋을 것 같습니다. 특히 표본이 1개일 경우는 분석 가능하지 않기 때문에 skip하는 것이 최대한 오동작을 줄이는 방안일 것 같습니다.

(위의 각 설정 값들을 잘 조정하면, 감도가 좋은 효과를 낼 수 있을 것 같습니다.)

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함