码迷,mamicode.com
首页 > 其他好文 > 详细

点到线段的距离

时间:2017-05-26 13:24:34      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:double   cross   ros   pre   cpp   point   gdi   ret   turn   

double PointToSegDist(double x, double y, double x1, double y1, double x2, double y2)
{
    double cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);
    if (cross <= 0) return sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));

    double d2 = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
    if (cross >= d2) return sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2));

    double r = cross / d2;
    double px = x1 + (x2 - x1) * r;
    double py = y1 + (y2 - y1) * r;
    return sqrt((x - px) * (x - px) + (py - y) * (py - y));
}

  

点到线段的距离

标签:double   cross   ros   pre   cpp   point   gdi   ret   turn   

原文地址:http://www.cnblogs.com/Heilce/p/6907761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!