Мы ищем функцию
select_camera следующего вида. (На неком подобии Python/Scala)
case class Range(begin:Double,end:Double)
case class CameraProps(distance_range : Range, luminosity_range : Range)
def select_camera(distance : Double, luminosity : Double, cams : List[CameraProps]) : List[Int] = {
....
}
По смыслу мы можем найти
не одну а много камер, удовлетворяющих условию. Тоесть результат
это - список камер.
По реализации - это похоже на поиск точки, которая попадает в прямоугольники.
Быстрые алгоритмы и структура это
QuadTree-s, R-Trees (Antonin Guttman).
И те и другие - подходят. Они по сути - вспомогательные структуры для ускорения поиска камер.
При условии что точка будет двигаться а камеры стоят стационарно а искать надо много.
Если двигаются и камеры и точки - то тогда надо искать другие структуры данных.