如何检测线是否在C#中相交?

时间:2012-01-01 17:07:58

标签: c# intersection

我想在C#中添加项目的其他功能,我已经可以在我的程序中绘制线条,但我想检测一行绘制的交叉线并显示它们相交的点。可能吗?谢谢

我的程序还包括计算垂直距离,下面是示例代码:

    public static Double PerpendicularDistance(Point Point1, Point Point2, Point Point)
    {
        Double area = Math.Abs(.5 * (Point1.X * Point2.Y + Point2.X * Point.Y + Point.X * Point1.Y - Point2.X * Point1.Y - Point.X * Point2.Y - Point1.X * Point.Y));
        Double bottom = Math.Sqrt(Math.Pow(Point1.X - Point2.X, 2) + Math.Pow(Point1.Y - Point2.Y, 2));
        Double height = area / bottom * 2;

        return height;
    }
}

这里的POINT是我的X和Y坐标的一个类。

1 个答案:

答案 0 :(得分:0)

如果你试图找到两条线的交集,那么解决方案是相当简单的。

如果两条线的形式为Ax + By = C:

float delta = a1*b2 - a2*b1;
if(delta == 0) 
    throw new ArgumentException("Lines are parallel");

float x = (b2*c1 - b1*c2)/delta;
float y = (a1*c2 - a2*c1)/delta;

我担心的是上面的评论说只有一条画线。我不确定你是什么意思。这是否意味着应用程序提供了一条线,而另一条用户提供了用户,或者我们是否在线条与自身相交的曲线处理?