zoukankan      html  css  js  c++  java
  • php之判断点在多边形内的api

    1、判断点在多边形内的数学思想:以那个点为顶点,作任意单向射线,如果它与多边形交点个数为奇数个,那么那个点在多边形内,相关公式:

    <?php
    class AreaApi{
        //$area是一个多边形经纬度集合,$lng是经度,$lat是纬度
        function inArea($area,$lng,$lat){
            $crossings=0;
            for($i=0;$i<count($area);$i++){
                $next_poit=$i+1;
                if($i==(count($area)-1)){
                    $next_poit=0;
                }
                $slope=($area[$next_poit]['lng']-$area[$i]['lng'])/($area[$next_poit]['lat']-$area[$i]['lat']);
                $cond1=($area[$i]['lat']<=$lat)&&($lat<$area[$next_poit]['lat']);
                $cond2=($area[$next_poit]['lat']<=$lat)&&($lat<$area[$i]['lat']);
                $above=($lng<$slope*($lat-$area[$i]['lat'])+$area[$i]['lng']);
                if(($cond1||$cond2)&&$above){
                    $crossings++;
                }
            }
            if($crossings%2!=0){
                return 'yes';
            }else{
                return "no";
            }
        }
    }

    2、参考链接:http://blog.csdn.net/shangquan2012/article/details/51912617

  • 相关阅读:
    Codeforces
    Codeforces
    Codeforces
    Codeforces
    Codeforces
    Codeforces
    Codeforces
    Codeforces
    洛谷
    GXU
  • 原文地址:https://www.cnblogs.com/zhylioooo/p/8352617.html
Copyright © 2011-2022 走看看