您的位置:首页 > 其它

轨迹回放--车辆移动方向

2017-11-16 14:11 435 查看
最近在做车辆轨迹回放,整理了一些内容。

返回的路网数据(经纬度点)
计算车辆运行的方向,通过向量P1→P2(经纬度值)与水平线的角度,计算车辆在P1点的运行方向。

 //向量与水平线的角度 var test=angle({x:1,y:1},{x:0,y:0});

function angle(start,end){

var diff_x = end.x - start.x;
   var diff_y = end.y - start.y;
   var angle = 360*Math.atan(diff_y/diff_x)/(2*Math.PI);//返回角度,不是弧度
   
   if(diff_x == 0){
   
    if(diff_y == 0){
    return 0;//如果起始点相同,则返回0
    }else if(diff_y>0){
    return 90;//正北方向
    }else{
    return 270; //正南方向
    }
   
   }else if(diff_x<0){
   
    if(diff_y>0){
    return 180+angle; //第二向量 (1,1)(0,2) 135   angle :-45
    }else{
    return 180+angle; //第三向量 (1,1)(0,0) 225   angle :45
    }

}else {     //if(diff_x>0){

if(diff_y>0){
    return angle; //第一向量 (1,1)(2,2) 45   angle 45
    }else{
    return 360+angle; //第四向量(1,1)(2,0)  315   angle -45 
    }
}

    

}

/*function getTransDirection(directionNum) {
// 实时方向  0为正东 逆时针方向
var direction = "";
if ((directionNum >= 0 && directionNum <= 20) || (directionNum >= 340 && directionNum <= 360)) {
   direction = "正东";  
   
} else if (directionNum > 20 && directionNum < 70) {
   direction = "东北";
} else if (directionNum >= 70 && directionNum <= 110) {
   direction = "正北";
} else if (directionNum > 110 && directionNum < 160) {
   direction = "西北";
} else if (directionNum >= 160 && directionNum <= 210) {
   direction = "正西";
} else if (directionNum > 210 && directionNum < 250) {
   direction = "西南";
} else if (directionNum >= 250 && directionNum <= 290) {
   direction = "正南";
} else if (directionNum > 290 && directionNum < 340) {
   direction = "东南";
} else {
   direction = '未知';
}
return direction;

}

*/

function angle(start,end){

var diff_x = end.x - start.x;
   var diff_y = end.y - start.y;
   var angle = 360*Math.atan(diff_y/diff_x)/(2*Math.PI);//返回角度,不是弧度
   
   if(diff_x == 0){
   
    if(diff_y == 0){
    return 0;//如果起始点相同,则返回0
    }else if(diff_y>0){
    return 90;//正北方向
    }else{
    return 270; //正南方向
    }
   
   }else if(diff_x<0){
   
    if(diff_y>0){
    return 180+angle; //第二向量 (1,1)(0,2) 135   angle :-45
    }else{
    return 180+angle; //第三向量 (1,1)(0,0) 225   angle :45
    }

}else {     //if(diff_x>0){

if(diff_y>0){
    return angle; //第一向量 (1,1)(2,2) 45   angle 45
    }else{
    return 360+angle; //第四向量(1,1)(2,0)  315   angle -45 
    }
}

    

}

/*function getTransDirection(directionNum) {
// 实时方向  0为正东 逆时针方向
var direction = "";
if ((directionNum >= 0 && directionNum <= 20) || (directionNum >= 340 && directionNum <= 360)) {
   direction = "正东";  
   
} else if (directionNum > 20 && directionNum < 70) {
   direction = "东北";
} else if (directionNum >= 70 && directionNum <= 110) {
   direction = "正北";
} else if (directionNum > 110 && directionNum < 160) {
   direction = "西北";
} else if (directionNum >= 160 && directionNum <= 210) {
   direction = "正西";
} else if (directionNum > 210 && directionNum < 250) {
   direction = "西南";
} else if (directionNum >= 250 && directionNum <= 290) {
   direction = "正南";
} else if (directionNum > 290 && directionNum < 340) {
   direction = "东南";
} else {
   direction = '未知';
}
return direction;

}

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐