В общем случае вы хотите проверить, щелкнули ли вы в пределах многоугольника, созданного путем расширения кривой в обоих направлениях - влево и вправо. Вычисление этого многоугольника в случае кривых Безье, общих конических сечений и т. Д. Сложно. Большинство графических библиотек позволяют вам устанавливать параметр ширины штриха и делать это за вас. Нарисуйте широкую кривую в цвете фона ниже кривой 1px и проверьте наличие совпадений на широкой. Просто убедитесь, что вы рисуете все цвета фона перед любым из цветов переднего плана.
В вашем конкретном случае с кругами, если у вас нет такой графической библиотеки, вам будет достаточно посмотреть, нажали ли вы в пределах допустимого расстояния от центра круга. Если у вас очень мало кругов, вы можете просмотреть весь список. Если у вас есть более полудюжины (чутье, когда нужно обрезать до лучшего алгоритма), разделите экран на четверти со списком, в которые может попасть попадание в один из прямоугольников, а затем разделите на четверти в этом прямоугольнике и проверяйте кругами, что это может быть, пока у вас не будет только полдюжины или около того возможностей. Затем перейдите вниз по списку возможностей, проверяя, находитесь ли вы в своей дельте для любого из кругов.