C#代码实现点到点、点到直线的距离、点是否在直线上
1.点到点的距离
public static double DistanceP2P(double x1, double y1, double x2, double y2)
{
double distance = 0;
double subx = x1 - x2;
double suby = y1 - y2;
distance = Math.Sqrt(subx * subx + suby * suby);
return distance;
}
2.点到直线的距离,及最近点
这里的直线方程是ax+by+c= 0
public static double DistanceP2L(double x, double y, double a, double b, double c, out double footX, out double footY)
{
double c2 = a * y - b * x;
//直线和直线的交点,这里是直线和他的法线交点
InterL2L(a, b, c, b, -a, c2, out footX, out footY);
double distance = Math.Abs(a * x + b * y + c) / Math.Sqrt(a * a + b * b);
return distance;
}
3.点是否在直线上
public static bool TestPInL(double a, double b, double c, double x, double y)
{
bool flag = false;
double res = a * x + b * y + c;
if (Math.Abs(res) < 0.001)
{
flag = true;
}
return flag;
}