Как определить, пересекается ли линия в C #? - PullRequest
0 голосов
/ 01 января 2012

Я хочу добавить дополнительную функцию моего проекта в 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 голосов
/ 01 января 2012

Если вы пытаетесь найти пересечение двух линий, то решение довольно тривиально.

Если две линии имеют форму 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;

Меня беспокоит комментарий выше, в котором говорится, что есть только одна нарисованная линия.Я не уверен, что вы имеете в виду.Означает ли это, что приложение предоставляет одну линию, а пользователь - другую, или мы имеем дело с изогнутыми линиями, где линия пересекает себя?

...