안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
멀티터치로 이동 줌 인/아웃등 관련 소스를 찾아서 보고 있습니다.
영문으로(http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2/1747?tag=rbxccnbzd1) 소스는 찾아서 보고 있는데
전 회전을 추가하고 싶습니다.
줌 인/아웃을 하면서 두개의 손가락(터치)를 돌리면 이에 따라 이미지가 회전을 하였으면 하는데요.
원본 소스에서 줌에 metrix를 사용하여 있어 여기에 rotate를 사용하면 될것 같은데..
문제는 두개의 좌표를 가지고 이미지의 회전각도를 어떻게 얻어내느냐 입니다.
지원되는 api가 있을까 해서 구글링을 해보았지만 내공부족으로 찾지를 못했습니다.
조언 부탁드립니다.
멀티터치로 이동 줌 인/아웃등 관련 소스를 찾아서 보고 있습니다.
영문으로(http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2/1747?tag=rbxccnbzd1) 소스는 찾아서 보고 있는데
전 회전을 추가하고 싶습니다.
줌 인/아웃을 하면서 두개의 손가락(터치)를 돌리면 이에 따라 이미지가 회전을 하였으면 하는데요.
원본 소스에서 줌에 metrix를 사용하여 있어 여기에 rotate를 사용하면 될것 같은데..
문제는 두개의 좌표를 가지고 이미지의 회전각도를 어떻게 얻어내느냐 입니다.
지원되는 api가 있을까 해서 구글링을 해보았지만 내공부족으로 찾지를 못했습니다.
조언 부탁드립니다.

give & take




싱글터치로 하면 축은 무조건 하나의 좌표로 박아놓고 돌리니까 돌리기 쉽죠..
멀티 터치의 경우 정밀하게 하려면 두 터치점을 일직선으로 그었을때 그 중점을 축으로 삼아야 할 것입니다.
(두손가락을 모두 돌리는 경우)
그런데 여기서 회전을 한다고 좌표를 옮겼을때 반드시 기존 축이 유지되리라는 보장이 없습니다.
(손가락이 그렇게 정밀하지 않으니까요)
회전과 평행이동이 같이 일어나는샘인데요.... 여기서 회전쪽만 취할수도 있습니다.
그럴경우 내가 사각형의 두 꼭지점을 잡고 돌렸는데 돌리고 나니 꼭지점이 안쫓아올 수도 있습니다.
멀티터치니까 조금 응용해서 한손가락은 고정 축이고 다른 손가락은 회전하는 점이면 얘기가 좀 다를수도 있습니다. (콤파스처럼....)
그런데 이경우 손가락의 한계 때문에 돌리기 불편하다고 말이 나올수도 있습니다.
각을 구하는 공식은... 회전축에서 점으로 나가는 백터를 구하고, 그 백터의 각을 atan으로 구하면 됩니다.
백터라고 해서 어렵게 보실거 없구요. (x2-x1, y2-y1) 이면 됩니다. x, y좌표로 tan 값은 y/x 로 하면 되구요....
단 atan의 각의 범위가 -pi/2 ~ pi/2 이기 때문에 두가지 케이스를 둬야 제대로 각을 얻을수 있습니다.
(tan은 주기가 pi 이기 때문....)
라디안과 degree는 적어도 아실거라 믿구요.... 모르면 네이버에서라도 찾아보면 됩니다.
아마 중고등학생들이 많이 물어봐놨을겁니다.
얼마나 회전했나를 구하기 위해서는 두개의 각을 뺄셈하면 그만입니다.