Мне было интересно, есть ли способ упорядочить точки пересечения в списке в зависимости от направления пересеченной линии.Найти пересечение многоугольника и упорядочить по строке
Вот картина, чтобы получить представление:
красные цифры многоугольник линии, которые существуют в списке. Затем у меня есть другой список с линиями, которые являются параллелями одной многоугольной линии, пересекающей многоугольник с определенным смещением (изображение показывает параллели с полилинией № 4). Итерация через них Я получаю точки пересечения, отображаемые в черных числах.
Моя проблема теперь в том, что я хотел бы иметь упорядоченные точки пересечения, как показано на рисунке. Но при повторении каждой параллели порядок найденных пересечений меняется в 22-й точке пересечения. Поскольку алгоритм находит пересечение в первой строке, потому что я просматриваю список.
Надеюсь, вы знаете, что я имею в виду. Я бы хотел, чтобы точки пересечения всегда были одинаковыми, как показано на рисунке.
Единственная идея, которую я придумал, чтобы преобразовать текущую строку на оси координат, а затем отсортировать 2 пересечениях х значение, но я предполагаю, что это очень плохо ...
Я был бы признателен каждый ответ, который приводит меня к решению. Заранее спасибо
Вот мой фрагмент кода:
for (int i = 0; i < parallelLines.Count; i++)
{
for (int j = 0; j < polyLines.Count; j++)
{
var actual = ber.LineSegementsIntersect(
parallelLines[i].v1,
parallelLines[i].v2,
polyLines[j].v1,
polyLines[j].v2,
out intersection);
// if intersection is found
if (actual)
{
intersections.Add(intersection);
}
}
}
Отсортируйте линии пересечения по их расстоянию от исходной линии. – RBarryYoung