int function(int Sx, int Sy, int Tx, int Ty){
int x = Tx - Sx;
int y = Ty - Sy;
//经线最短修正(防止南辕北辙)
if(y > 180){
y -= 180;
}
else if(y < -180){
y += 180;
}
int r = 0; //方向枚举,约定:正西 1,西北 2,正北 3,东北 4, 正东 -1,东南 -2,正南 -3, 西南 -4
if(x > 0){
if(y > 0){//第一象限
r = 4;//东北
}
else if(y < 0){//第四象限
r = -2;//东南
}
else{
r = -1;//正东
}
}
else if(x < 0){
if(y > 0){//第二象限
r = 2;//西北
}
else if(y < 0){//第三象限
r = -4;//东南
}
else{
r = 1;//正西
}
}
else{
if(y > 0){
r = 3;//正北
}
else if(y < 0){
r = -3;//正南
}
else{
r = 0;//原点
}
}
return r;
}
//只是思想或算法。估计我想简单了。不过表达一下而已,理解上有问题被别人指正总是好的。
陛下
|
老鸟四级
|园豆:3938
|
2008-08-19 20:47