我需要检测位于特定像素周围xxx距离的像素。
有没有最佳算法来实现这一目标?
谢谢。
答案 0 :(得分:0)
通过走动(0,0)进行圆形展开,同时任一坐标小于半径绝对值,并将结果的坐标添加到像素。应该这样做。
答案 1 :(得分:0)
试试这个:
创建两个Point对象:(http://help.adobe.com/pt_BR/FlashPlatform/reference/actionscript/3/flash/geom/Point.html)以获取所需像素的(x,y)以及周围对象的(x,y)。
然后使用 Point.distance 来获取两个对象的距离。所以,你有像素的像素半径。
我希望你能理解。
答案 2 :(得分:0)
如果我有宽度和高度的位图:
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);
}
}
答案 3 :(得分:0)
你能做的是:
- 创建一个Sprite并绘制一个所需半径的圆并填充
- 创建bitmapData并使用该Sprite绘制到它
- 遍历bitmapData并检查非透明像素
- 找到非透明时创建点并应用x,y offset
- 将该点推入数组。
您最终应该得到给定半径内所有像素位置的数组。
我之所以选择这种方法,是因为它听起来像是想要实际修改或利用这些数据,实质上你是通过bitmapData来实现的。所以这个过程可以让你潜在地组合这些过程 - 如果你在同时迭代这两个bitmapData的同时进行比较和修改。