package { /* * @autor Benjamin Jung * * @website http://www.mukimuki.fr/flashblog/ * * @description : Compute general moments and central moments until the second order * * */ public class Moments { public var m00:Number; public var m10:Number; public var m01:Number; public var m11:Number; public var m20:Number; public var m02:Number; public var mu00:Number; public var mu10:Number; public var mu01:Number; public var mu11:Number; public var mu20:Number; public var mu02:Number; public var invM00:Number; public function Moments(aData:Array) { m00 = m01 = m10 = m11 = m02 = m20 = 0; var x:int; var y:int; var a:Array; var val:Number for(x = 0; x < aData.length; ++x) { a = aData[x]; for(y = 0; y < a.length; ++y) { val = a[y]; m00 += val; m01 += y * val; m10 += x * val; m11 += x * y * val; m02 += y * y * val; m20 += x * x * val; } } invM00 = 1 / m00; var xc:Number = m10 * invM00; var yc:Number = m01 * invM00; mu00 = m00; mu01 = mu10 = 0; mu20 = m20 - m10 * xc; mu02 = m02 - m01 * yc; mu11 = m11 - m01 * xc; } public function toString():String { return "m00 = " + m00 + " , m01 = " + m01 + " , m10 = " + m10 + ", m02 = " + m02 + " , m20 = " + m20 + " , mu00 = " + mu00 + " , mu01 = " + mu01 + " , mu10 = " + mu10 + " , mu11 = " + mu11 + " , mu02 = " + mu02 + " , mu20 = " + mu20; } } }