我正在研究圖形應用程序,用戶可以在畫布上繪製任意數量的線(從點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