/// <summary> /// Compute kth multipole coefficient of a set of points ps around a centre z0 /// </summary> /// <param name="k">Coefficient index</param> /// <param name="ps">Set of points</param> /// <returns></returns> private Complex compute(int k, Point[] ps) { int m = ps.Length; Complex ak = new Complex(0.0); if (k == 0) { ak.re = m; } else { for (int i = 0; i < m; ++i) { Point q = ps[i]; Complex pc = new Complex(q.X, q.Y); ak -= Complex.Pow(pc - z0, k); } ak.divideBy(k); } return(ak); }
/// <summary> /// Compute kth multipole coefficient of a set of points ps around a centre z0 /// </summary> /// <param name="k">Coefficient index</param> /// <param name="ps">Set of points</param> /// <returns></returns> private Complex compute(int k, Point[] ps) { int m = ps.Length; Complex ak = new Complex(0.0); if (k == 0) { ak.re = m; } else { for (int i = 0; i < m; ++i) { Point q = ps[i]; Complex pc = new Complex(q.X, q.Y); ak -= Complex.Pow(pc - z0, k); } ak.divideBy(k); } return ak; }