2016-11-01 5 views
0

두 점 (터치 위치)이 있으며 이미지 중심을 기준으로 두 점 사이의 각도를 알고 싶습니다. 두 점 사이의 부호있는 각도

Ilustration

잠시 동안 인터넷 검색 후, 나는 Law of cosines을 발견했다.

그래서 나는 다음과 같은 코드를 내놓았다 :

final float x = e.getX() - v.getWidth()/2; 
final float y = e.getY() - v.getHeight()/2; 

final float a = PointF.length(x, y); 
final float b = PointF.length(x_, y_); 
final double c = Math.sqrt(Math.pow(x - x_, 2) + Math.pow(y - y_, 2)); 

final double alpha = Math.toDegrees(Math.acos((Math.pow(a , 2) + Math.pow(b, 2) - Math.pow(c, 2))/(2 * a * b))); 

작동하는 것 같다. 하지만 큰 문제가 하나 있습니다. 각도는 항상 양수입니다. 그러나 나는 시계 방향과 반 시계 방향의 움직임을 인식 할 수 있어야한다. 그러므로 그림에서 점 1에서 점 2까지는 +45이지만 2에서 1까지는 -45가됩니다. 그걸 어떻게하는 지 아는가?

답변

-1

첫 번째 클릭과 두 번째 클릭을 구별해야합니다. 과 어떻게 관련이 있는지 알아보십시오. 위/왼쪽, 아래/오른쪽 등 다음 참조 점에 따라 사용하십시오. 각은 클릭 한 순서를 신경 쓰지 않습니다. clock/countercheck do care

기본적으로 중심점보다 위에 있으면 다른 점의 왼쪽에 어떤 점이 있는지 확인해야합니다. 센터에있는 경우 오른쪽에있는 것을 확인해야합니다. 모두 정말 시계 방향을 정의하는 방법에 따라 달라집니다.