Найти точки пересечения двух серий на графике devexpress

Как видите, у меня есть диаграмма winform ( DevExpress Chart) с двумя сериями.
Каждая серия имеет свои очки.
И я хочу найти перекрывающиеся точки этих двух серий (отмечены зеленым кружком на рисунке) .

Например ( 3.4 для первой точки перекрытия и 7.3 для второй точки перекрытия) .
Благодарю.

2 ответа

Если у вас есть прямой доступ к Series Коллекция, вы могли бы:

var intersection = Series[0].Points.Intersect(Series[1].Points);

Если вы создаете дискретный Point Объекты на этом пути, возможно, вам также придется определить поведение соответствия.

Как я понял, каждая серия в вашем случае - это просто совокупность секвенциальных точек. Все, что вам нужно, это найти пересечение между отрезками линии из каждой коллекции. Я предлагаю использовать для этой цели алгоритм Бентли-Оттмана, который позволяет найти ответ (N log N) способом (N - количество отрезков линии из обеих серий). К сожалению, я не знаю, есть ли реализация в C# (в любое время вы можете использовать реализацию C++, если вы не найдете решения C#)

Если у вас всегда есть две серии, определенные двумя разными функциями, вы можете оптимизировать алгоритм O (N) (используйте логику слияния)

Другие вопросы по тегам