atan2 의 결과의 부호(+,-) 값이 반전되어 나올때 어떻게 해결해야 할까요?
조회수 1010회
안녕하세요. 안드로이드로 간단한 게임을 만들던중 수학 식(atan2의 리턴값)에 막혀 질문드립니다.
저는 터치 좌표를 이용하여 View를 Rotate 시키고자 합니다.
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
touchStartAngle = getPositionAngle(x, y);//
currentAngle = getPositionAngle(x, y);//내가 터치한 지점이 원의 각도상 어떤곳에 위치하는 가
break;
case MotionEvent.ACTION_MOVE:
touchStartAngle = currentAngle;
currentAngle = getPositionAngle(x, y);
double diff = new BigDecimal(String.valueOf(currentAngle)).subtract(new BigDecimal(String.valueOf(touchStartAngle))).doubleValue();
double degrees = Math.toDegrees(diff);
break;
case MotionEvent.ACTION_UP:
startRotate(degree);//구한 각도 값으로 애니메이션 시작
break;
}
}
private double getPositionAngle(double xTouch, double yTouch) {
//pivot 은 가운데 기준이되는 점
double x = xTouch - getPivotX();
double y = yTouch - getPivotY();
double radian = Math.atan2(y, x);
return radian;
}
제가 공식을 구하는 코드이구요. 여기서 문제점은 getPositionAngle의 값이 -2.1, -2.2,-2.3 과 같이 순차적으로 잘나오다가 어느순간 2.1 로 부호가 변경되어버리니 View가 제가 원하는 방향과 거꾸로 돌게되는 문제가 있습니다.
atan2의 값을 어떻게 보정해줘야 원하는 방향으로 돌릴 수 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력