Abs*_*the 3 c# arrays math unity-game-engine unity5
我有一个由SW编号的8个罗盘点阵列,从顺时针方向到S:
2 3 4
1 5
0 7 6
Run Code Online (Sandbox Code Playgroud)
我想计算从一个点到另一个点的最短路线是顺时针(+1)还是逆时针(-1).例如,从7到5将是-1,从7到0将是+ 1.
我想这个简单的问题,但今天我的大脑已经冻结了.
我得到的最接近if abs(start - end) < 4, -1, 1但如果开始是3则不起作用.
还有一个类似的问题在这里,接受的答案是使用模,但并没有解释如何.我没有成功地抛出各种计算.
而不是使用abs,添加8(条目数)然后采用模数8,如下所示:
enum Direction {
None, Clockwise, Counterclockwise
}
public static Direction GetDirection(int a, int b) {
if (a == b) {
return Direction.None;
}
return (a-b+8)%8 > 4 ? Direction.Clockwise : Direction.Counterclockwise;
}
Run Code Online (Sandbox Code Playgroud)
添加8使得差异非负; 模数 - 8将其带入0... 7范围.
请注意,当步数是多少时4,无论你走哪条都没关系,所以程序更喜欢逆时针方向.你可以用它>=代替来改变它>.
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |