我正在研究图形应用程序,用户可以在画布上绘制任意数量的线(从点A到点B有一定的粗细),矩形或椭圆。计算形状的绘制图像中的独特像素
完成后,我有一组形状数据表明每个形状和线条的位置,我需要确定它们作为研究项目的一部分着色了多少个独特像素。
我的幼稚算法是为每个形状实现bool shape.Contains(x,y),并针对图像中每个像素的每个绘制形状调用它以确定该像素是由直线,矩形还是椭圆绘制的。
以另一种方式工作,我可以创建void shape.SetPixels(bool [,] canvas),并将每个形状设置为true,它包含每个像素。这是我实际上实现的,并且对于大型数据集来说,它非常缓慢。
我有一种感觉,有一种更直接的方式去从原始形状数据到我需要的输出,而不需要检查每个像素。所以我的问题是,给定一组形状数据,是否有一个O(n)函数bool [,] IsColored(int x,int y){},它可以比任何一个更直接地生成彩色像素的真/假的矩阵我给出的想法?
如果你画它呢?由此产生的位图本质上就是这样一个矩阵 – harold
O(n)是什么意思?实现shape.Contains(x,y)并为每个形状调用一次是O(n),其中n是形状的数量。 – jwd
为什么不能形状只返回它包含的像素集? – Magnus