Matrix에 대해서

Android 2015. 4. 1. 01:08

멀티터치줌 기능을 구현하기 위해서 매트릭스를 사용했는데, 매트릭스의 동작 과정과 간단한 개념 정도는 알아야 할 것 같았다.

SURFACEVIEW카메라 위에 IMAGEVIEW를 MATRIX를 이용해서 멀티터치 줌, 무브기능을 구현하는 중에

가정 처음에 터치 이벤트가 들어가게 되면 이미지뷰가 중앙에 위치하던 것이 좌측 위로 옮겨졌다. 

우리가 사용해야 되는것은 가급적 중앙에 위치해야 한다. 이 문제를 해결하기 위해서 매트릭스에 대해서 공부를 

하게 됐다. 


MATRIX는 3차원 배열로 되어 있다. 

MSCALE_X      0

MSKEW_X       1

MTRANS_X      2

MSKEW_Y       3

MSCALE_Y      4

MTRANS_Y      5

MPERSP_0      6

MPERSP_1      7

MPERSP_2      8


행렬로 보면

MSCALE_X      MSKEW_X       MTRANS_X

MSKEW_Y       MSCALE_Y      MTRANS_Y

MPERSP_0      MPERSP_1      MPERSP_2


MSCALE는 크기 조절... 에 사용되는것으로 보인다 (핀치투줌을 하면서 확인해보니 맞는것같다.)

MSKEW는 이미지의 기울기 (이것은... 확실하게 구분 갈 정도로는 작업해보질 않아서 확실치는...)

MTRANS!! 이친구가 나에겐 가장 중요했는데... x좌표와 y좌표의 변환값을 나타내고, 개인적으로 

느끼기엔 실질적으로 화면에서 드래그될 때, canvas상의 절대좌표 비스무리하게 이용할 수 있는 친구였다. (물론 그러라고 만든게 아닐것같기도 하지만...)


로그를 첨부로 올리니 확인해보자!!!

  Log.e("Value", "value X : "+value[0]+"/"+value[1]+"/"+value[2]);

  Log.e("Value", "value Y : "+value[3]+"/"+value[4]+"/"+value[5]);

  Log.e("Value", "value per : "+value[6]+"/"+value[7]+"/"+value[8]);



Value(12788): value X : 1.1628919/0.0/-1147.0

Value(12788): value Y : 0.0/1.1628919/-447.0

Value(12788): value per : 0.0/0.0/1.0


Value(12788): value X : 2.7457745/0.0/-3322.0

Value(12788): value Y : 0.0/2.7457745/-1910.0

Value(12788): value per : 0.0/0.0/1.0




Posted by slender ankles
,