zoukankan      html  css  js  c++  java
  • 点到直线的距离算法来源于mapserver(目前所知效率最高的) 推荐*****

    double msDistancePointToSegment(pointObj *p, pointObj *a, pointObj *b)
    {//计算点到线段(a,b)的距离  
    double l; /* length of line ab */ 
    double r,s; 
    l = msDistancePointToPoint(a,b);   
    if(l == 0.0) /* a = b */   
     return( msDistancePointToPoint(a,p)); 

    r = ((a->y - p->y)*(a->y - b->y) - (a->x - p->x)*(b->x - a->x))/(l*l);   

    if(r > 1) /* perpendicular projection of P is on the forward extention of AB */    
    return(MS_MIN(msDistancePointToPoint(p, b),msDistancePointToPoint(p, a)));  

    if(r < 0) /* perpendicular projection of P is on the backward extention of AB */   
     return(MS_MIN(msDistancePointToPoint(p, b),msDistancePointToPoint(p, a)));  
     
    s = ((a->y - p->y)*(b->x - a->x) - (a->x - p->x)*(b->y - a->y))/(l*l);   

    return(fabs(s*l));
    }

    double msDistancePointToPoint(pointObj *a, pointObj *b)
    {
      double d;
      double dx, dy;
     
      dx = a->x - b->x;
      dy = a->y - b->y;
      d = sqrt(dx*dx + dy*dy);
      return(d);
    }

  • 相关阅读:
    Spring源码剖析4:懒加载的单例Bean获取过程分析
    css3动画 9步
    删除文件
    监听变量的方法
    jPaginate应用
    bg-render+bg-class+filter
    css兼容处理
    系统前端关键点
    token 入门教程
    svg笔记----------path篇
  • 原文地址:https://www.cnblogs.com/mazhenyu/p/454044.html
Copyright © 2011-2022 走看看