Я работаю над графическим приложением, в котором пользователь может нарисовать любое количество линий (с некоторой толщиной от точки A до точки B), прямоугольников или эллипсов на холсте.
После того, как ониГотово, у меня есть набор данных формы, указывающий местоположение каждой фигуры и нарисованной линии, и мне нужно определить, сколько уникальных пикселей они раскрасили в рамках исследовательского проекта.
Мой наивный алгоритм заключается в реализации формы bool. Содержит (x, y) для каждой фигуры и вызывает ее для каждой нарисованной фигуры для каждого пикселя в изображении, чтобы определить, был ли этот пиксель нарисован линией, прямоугольником илиэллипс.
Работая другим способом, я мог бы создать void shape.SetPixels (bool [,] canvas) и установить для каждой фигуры значение true, каждый пиксель, который он содержит.Это то, что я на самом деле реализовал, и с большими наборами данных это мучительно медленно.
У меня такое ощущение, что есть более прямой путь от необработанных данных формы к нужному выводу без изучения каждого пикселя.Так что мой вопрос, учитывая набор данных формы, есть ли функция O (n) bool [,] IsColored (int x, int y) {}, которая может генерировать матрицу true / false для цветных пикселей более непосредственно, чем либоИдея, которую я дал?