zoukankan      html  css  js  c++  java
  • 各种计算

    平面坐标计算代码

    /// 平面坐标系,通过三角函数求终点坐标
    /// startPoint(x,y): 起点
    /// angle: 角度
    /// distance: 距离
    /// <returns>终点坐标</returns>
    function calNewPointByAngle2(startPoint, angle, distance) {
        var endPoint = {};
        
        // 角度转弧度
        var radian = (angle * Math.PI) / 180;
        
        // 计算新坐标(对于无限接近0的数字,此处没有优化)
        endPoint.x = startPoint.x + distance * Math.sin(radian);
        endPoint.y = startPoint.y + distance * Math.cos(radian);
        
        return endPoint;
    }

    注意:

    
    

            1. 计算坐标时,对于无限接近0的小数没有进行优化,可根据实际转换为0

    
    

            2. 球面坐标计算时,不同维度球面周长不同,计算x偏移量时,需要根据所在维度进行转换

     

    球面坐标计算代码

    /// 球面坐标系,通过三角函数求终点坐标
    /// startPoint(lng,lat,alt): 起点
    /// angle: 角度
    /// distance: 距离
    /// <returns>终点坐标</returns>
    function calNewPointByAngle3(startPoint, angle, distance) {
        var rate = Math.cos(startPoint.lat * Math.PI / 180); // 指定维度球面长度和赤道长度的比率
    
        var lat_meter = 111111; // 1维度 ≈ 111,111米
        var r = angle * Math.PI / 180.0;
        var x = Math.sin(r) * distance;
        var y = Math.cos(r) * distance;
        x = x / lat_meter / rate; // x偏移量需要根据所在维度进行计算
        y = y / lat_meter;
    
        return {
            x: startPoint.lng + x,
            y: startPoint.lat + y,
            z: startPoint.alt
        };
    }

    注意:

    
    

            1. 计算坐标时,对于无限接近0的小数没有进行优化,可根据实际转换为0

    
    

            2. 球面坐标计算时,不同维度球面周长不同,计算x偏移量时,需要根据所在维度进行转换

     
  • 相关阅读:
    nodejs中 underscore 包有什么作用
    how to download a file with Nodejs(without using third-party libraries)用node下载文件
    nodejs 操作文件系统读取写入文件
    Express URL跳转(重定向)的实现
    nodejs处理页面跳转url地址的处理
    MongoDB和MySQL的区别
    Mysql简单介绍
    MongoDB索引原理
    redis GEO地理位置命令介绍
    lfyzoj104 Counting Swaps
  • 原文地址:https://www.cnblogs.com/lingLuoChengMi/p/14325991.html
Copyright © 2011-2022 走看看