2015-12-15 105 views
1

我有两个角度,currentAngle和goalAngle。两个角度都在[0,360]之间。我需要一行代码来告诉我以currentAngle开始的旋转方式,以最便宜的方式到达goalAngle,其中旋转+1或-1度需要花费1美元。玩家应该旋转哪个方向?

这里是我的代码将是什么样子:

if(???) { rotateClockwise(); } 
else { rotateCounterclockwise(); } 

回答

0
 // Given the player's rotation, calculate which direction the player should rotate, if any. 
    if(Math.abs(goalAngle - super.getRotY()) > ROTATION_ACCURACY){ 
     if(Math.abs(goalAngle - super.getRotY()) < 180){ 
      if(goalAngle - super.getRotY() < 0){ super.increaseRotation(0, -super.getTurnSpeed(), 0); } 
      else{ super.increaseRotation(0, super.getTurnSpeed(), 0); } } 
     else{ 
      if(goalAngle - super.getRotY() < 0){ super.increaseRotation(0, super.getTurnSpeed(), 0); } 
      else{ super.increaseRotation(0, -super.getTurnSpeed(), 0); } } } 
0

<script type="text/javascript"> 
 
function rotateClockwise() 
 
{ 
 
\t alert('Clockwise'); 
 
} 
 
function rotateCounterclockwise() 
 
{ 
 
\t alert('Counterclockwise'); 
 
} 
 

 
function calc(currentAngle,goalAngle) 
 
{ 
 
\t if(isNaN(currentAngle)||isNaN(goalAngle)){alert('invalid angles');return false;} 
 
\t 
 
\t var diff=currentAngle-goalAngle; 
 
\t while (diff < -180) diff += 360; 
 
\t while (diff > 180) diff -= 360; 
 
\t if(diff<0){ 
 
\t \t rotateClockwise(); 
 
\t }else{ 
 
\t \t rotateCounterclockwise(); 
 
\t } 
 
} 
 
</script> 
 
<input type="number" id="c" value="45" step="1"> 
 
<input type="number" id="g" value="75" step="1"> 
 
<input type="button" onclick="calc(parseFloat(document.getElementById('c').value),parseFloat(document.getElementById('g').value))" value="Calc">