AS3 - 获取像素周围像素的算法



我需要检测位于特定像素周围距离xxx的像素。

是否有任何最佳算法来实现这一点?

谢谢。

在任一坐标小于绝对值半径的情况下,通过四处走动 (0,0) 进行圆形扩展,并将结果的坐标添加到像素的坐标中。应该做。

试试这个:

创建两个 Point 对象:(http://help.adobe.com/pt_BR/FlashPlatform/reference/actionscript/3/flash/geom/Point.html) 获取所需像素的 (x,y) 和周围对象的 (x,y)。

然后使用 Point.distance 获取两个对象的距离。因此,您拥有像素的像素半径。

我希望你已经理解了。

如果我有一个宽度和高度的位图:

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);
    } 
}

你可以做的是:

-- 创建一个精灵并绘制所需半径的圆并填充

-- 创建位图数据并使用该精灵绘制到它

-- 遍历位图数据并检查非透明像素

-- 当发现不透明时,创建点并应用 x,y 偏移

-- 将该点推入数组。

您最终应该得到给定半径内所有像素位置的数组。

我之所以选择这种方法,是因为听起来你想实际修改或利用这些数据,基本上你会通过bitmapData来做到这一点。因此,此过程将允许您潜在地组合这些过程 - 如果您在同时迭代两个位图数据时进行比较和修改。

最新更新