我需要检测位于特定像素周围距离 xxx 的像素。
是否有任何最佳算法来实现这一目标?
谢谢你。
通过在 (0,0) 周围走动进行圆形扩展,同时任一坐标的绝对值小于半径,并将结果的坐标添加到像素的坐标中。应该做。
尝试这个:
创建两个 Point 对象:( http://help.adobe.com/pt_BR/FlashPlatform/reference/actionscript/3/flash/geom/Point.html ) 以获取所需像素的 (x,y) 和(x,y) 周围的物体。
然后使用Point.distance获取两个对象的距离。所以,你有像素的像素半径。
我希望你已经明白了。
你可以做的是:
-- 创建一个 Sprite 并绘制一个所需半径的圆并填充
-- 创建 bitmapData 并使用该 Sprite 绘制到它
-- 遍历 bitmapData 并检查不透明像素
-- 当发现不透明时创建点并应用 x,y 偏移
-- 将该点推入一个数组。
您最终应该得到一个给定半径内所有像素位置的数组。
我之所以选择这种方法,是因为听起来您想要实际修改或利用这些数据,而本质上您将通过 bitmapData 来做到这一点。因此,此过程将允许您潜在地组合这些过程 - 如果您在同时迭代两个 bitmapData 时进行比较和修改。
如果我有一个宽度和高度的位图:
centerX = width/2;
centerY = height/2;
radius = 250; // max radius to scan
for (j = 0; j < radius; j++) {
for (i = 0; i < 360; i++) {
radialX = centerX + sin(i) * j;
radialY = centerY + cos(i) * j;
// I can found the pixel data at:
radialX + (radialY * width);
}
}