c# 点到线段距离


    // 计算两点之间的距离    
            private double lineSpace(double x1, double y1,double x2, double y2) {    
                double lineLength = 0;
                lineLength = Math.Sqrt((x1 - x2) * (x1 - x2) + (y1 - y2)*(y1 - y2));       
                    
                return lineLength;    
                  
            }  
               //点到线段距离  
            private double pointToLine(double x1, double y1,  double x2, double y2,  double x0, double y0)    
                 {    
                    double space = 0;    
                    double a, b, c;    
                    a = lineSpace(x1, y1, x2, y2);// 线段的长度    
                    b = lineSpace(x1, y1, x0, y0);// (x1,y1)到点的距离    
                    c = lineSpace(x2, y2, x0, y0);// (x2,y2)到点的距离    
                    if (c <= 0.000001 || b <= 0.000001) {    
                        space = 0;    
                        return space;    
                    }    
                    if (a <= 0.000001) {    
                        space = b;    
                        return space;    
                    }    
                    if (c * c >= a * a + b * b) {    
                        space = b;    
                        return space;    
                    }    
                    if (b * b >= a * a + c * c) {    
                        space = c;    
                        return space;    
                    }    
                     double p = (a + b + c) / 2;// 半周长    
                     double s = Math.Sqrt(p * (p - a) * (p - b) * (p - c));// 海伦公式求面积    
                    space = 2 * s / a;// 返回点到线的距离(利用三角形面积公式求高)    
                    return space;    
                }   


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值