Мой выбор - квадри.
Каждая ячейка (узел в дереве) в дереве квадрантов хранит контейнер с треугольниками, которые полностью находятся внутри ячейки и не могут находиться в меньшей ячейке. Более глубокая, меньшая ячейка содержит меньшие треугольники.
Запрос типа «треугольники в данном ограничивающем прямоугольнике» сводится к поиску нужного узла в дереве (ячейка, содержащая прямоугольник).
Запрос типа «треугольники, покрывающие данную точку» - это вопрос, чтобы найти ячейку (и ее подэлементы) для этой точки, а затем проверить каждый треугольник в контейнерах для этих ячеек.