2011-01-07 4 views
1

나는 4 등분 된 원을가집니다. 가장 효율적인 방법으로 한 위치에서 다른 위치로 원을 회전시킬 수있는 알고리즘이 필요합니다. 나는 새에 도착하는 원을 회전 할 필요가 얼마나 많은도 얻을 알고리즘을 사용하여슬롯이 4 개인 효율적인 회전 트레이

int degrees = (currentPos - newPos) * 90; 

:

은 "트레이"

은 내가 지금 알고리즘으로를 사용하여 1

(4)에 이름이 지정됩니다 위치. 그러나 내가 4 위 자리에 있고 1로 갈 필요가 있다면 결과는 4 - 1 * 90 = 270이 될 것입니다.이 경우 가장 효율적인 것은 270 대신 -90을 회전시키는 것입니다. (동일은 1 ~ 4).

누구나 어떻게해야할까요? if 문을 사용할 수 있습니다.

 if(degrees >= -180 && degrees <= 180) 
     sortingTrayMotor.rotate(degrees); 
    else if(degrees == -270) 
     sortingTrayMotor.rotate(90); 
    else 
     sortingTrayMotor.rotate(-90); 

일부 mod 조작으로 더 좋은 방법이 있다고 생각합니다.

답변

2

결과가 180도 이상인 경우에만 360도를 뺍니다.

관련 문제