Вам нужно просто проверить наличие самопересечений или найти их все?Последний сложнее, чем O(N log N)
, так как вы можете иметь O(n^2)
пересечений с n
сегментами.
Если вам нужно только выяснить, существуют ли самопересечения, или найти их небольшое количество, тогда посмотрите здесь .Эта статья, кажется, претендует именно на то, что вам нужно, особенно в разделе планаризации полигонов.Я сомневаюсь, что реализация алгоритма, описанного там, была бы простой или стоящей для любой проблемы разумного размера.Но такой алгоритм существует.Отказ от ответственности: я не пытался проработать статью и понять ее.