Вы не можете использовать select, если вы остаетесь со строками, потому что вам нужно было бы щелкнуть по пикселам линии, а не по пространству внутри линий, ограничивающих их, что я прочитал как то, что вы хотите сделать.
Вы можете использовать ответ Коса, но для того, чтобы визуализировать пространство, вам нужно его заполнить сплошным цветом, что потребует преобразования всех ваших контуров в выпуклые типы, что является болезненным. Поэтому я думаю, что иногда это сработает и в некоторых случаях даст неправильный ответ, если вы этого не сделаете.
Что вам нужно сделать, это использовать процессор. У вас есть экстенты вида из области просмотра и матрицы перспективы. С помощью координат мыши создайте представление для вектора указателя мыши. У вас также есть все координаты контуров.
Возьмите первую координату первого контура и сделайте вектор второй координатой. Сделайте из них вектор. Возьмите 3-ю координату и сделайте вектор от 2 до 3, повторите все вокруг вашего контура и, наконец, сделайте последний из координат n обратно в 0 снова. Для каждой пары в последовательности найдите перекрестное произведение и суммируйте все результаты. Когда у вас есть этот окончательный вектор суммирования, держите его и делайте точечное произведение с вектором направления указателя мыши. Если его + ve, то мышь находится внутри контура, если -ve, то его нет, а если 0, то я предполагаю, что плоскость контура и направление мыши параллельны.
Сделайте это для каждого контура, и тогда вы узнаете, какие из них пронзены вашей мышью. Вам решать, какой вы хотите выбрать из этого набора. Самый высокий Z?
Звучит как большая работа, но это не так уж плохо и даст правильный ответ. Возможно, вы захотите дополнительно оставить ограничивающие рамки для всех ваших контуров, после чего вы можете раньше вычеркнуть те из вектора мыши, выполнив ту же математику, что и для полного вектора, но только с 4 сторон, и если его нет внутри, то контур не может быть либо.