zoukankan      html  css  js  c++  java
  • 判断经纬度是否在地球 圆上

    转载  https://www.cnblogs.com/songxiaotong/p/10852615.html

    public class ScopeJudgmentUtil {
        /**
         * 地球半径
         */
        private static double EARTH_RADIUS = 6378138.0;
    
        private static double rad(double d) {
            return d * Math.PI / 180.0;
        }
    
        /**
         * 计算是否在圆上(单位/千米)
         * 
         * @param radius
         *            半径
         * @param lat1
         *            维度
         * @param lng1
         *            经度
         * @return false  不在    true   在
         */
        public static boolean isInCircle(double radius, double lat1, double lng1, double lat2, double lng2) {
    
            double radLat1 = rad(lat1);
            double radLat2 = rad(lat2);
            double a = radLat1 - radLat2;
            double b = rad(lng1) - rad(lng2);
            double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
            s = s * EARTH_RADIUS;
            s = Math.round(s * 10000) / 10000;
            if (s > radius) {// 不在圆上
                return false;
            } else {
                return true;
            }
        }
    }
    古人学问无遗力,少壮工夫老始成。 纸上得来终觉浅,绝知此事要躬行。
  • 相关阅读:
    [HNOI2008] Cards
    loj #136
    a problem
    dp * 3
    STL
    套题1
    luogu 4211
    loj #2319
    loj #2316
    luogu 1144
  • 原文地址:https://www.cnblogs.com/wf-zhang/p/12035099.html
Copyright © 2011-2022 走看看