Как обрезать ломаную линию (набор линий) в сетке. Получить полилинии в каждой ячейке сетки. Python - PullRequest
0 голосов
/ 17 марта 2020

Я дал набор линий в некотором координатном пространстве (в моем случае изображение). Теперь я наложил сетку на верхнюю часть изображения и хочу вычислить для каждой ячейки сетки линии, которые пересекаются с ней.

Каждая линия ломаной линии представлена ​​в виде двух точек на изображении и некоторого дополнительного атрибута, который требует сохраняется также (на изображении ниже дополнительный атрибут - цвет [оранжевый или красный]). enter image description here Линии имеют тенденцию распределяться по нескольким ячейкам сетки, что приводит к необходимости их обрезать, соответственно. В примере показан набор оранжевых и красных линий, которые должны быть обрезаны в соответствии с черной сеткой. Глядя на синюю ячейку, становится очевидной необходимость добавления дополнительных точек к линиям.

Моя исходная идея - вычислить все точки, где сетка пересекается с любой линией. Всякий раз, когда такое пересечение найдено, точка пересечения добавляется к исходному отрезку линии. На следующем шаге точки должны быть отсортированы в ячейки сетки с помощью простой операции по модулю. Т.е.

for each grid cell:
    for each original line:
        keep only the points from the line which lay in the current grid cell
  1. Я не уверен, может ли мой подход действительно работать. И если это работает, если это не ужасно неэффективно.
  2. Я борюсь с вычислением заявленных точек пересечения (где пересекаются сетка и отрезок)

Помощь для любого из двух очки высоко ценятся.

...