C++:點到線段的平面距離。點與點的平面距離。
阿新 • • 發佈:2019-02-04
LPoint是自己定義的點
//點(p0) 到線段(p1,p2)的距離
double GroundFilter::xj2DistancePointAndLine( LPoint p0, LPoint p1, LPoint p2 )
{
double dis12 = xj2DistancePointAndPoint(p1, p2);//線段長度
double dis01 = xj2DistancePointAndPoint(p0, p1);//p1與p0的距離
double dis02 = xj2DistancePointAndPoint(p0, p2);//p2與p0的距離
double HalfC = (dis12 + dis01 + dis02) / 2;// 半周長
double s = sqrt(HalfC * (HalfC - dis12) * (HalfC - dis01) * (HalfC - dis02));//海倫公式求面積
double xj2DisPL = 2 * s / dis12;// 返回點到線的距離(利用三角形面積公式求高)
return xj2DisPL;
}
//點與點的平面距離
double GroundFilter::xj2DistancePointAndPoint(LPoint p1, LPoint p2 )
{
double x1=p1.x, y1=p1.y;
double x2=p2.x, y2=p2.y;
double dis=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
return dis;
}