static void AddMask(Number[][] data, Number[][] add, int addx, int addy) { foreach (var addv in GetArrayInfos(add)) { var datav = new ArrayDataInfo <Number>() { data = data, x = addv.x + addx, y = addv.y + addy, }; datav.value = datav.value.Plus(addv.value); } }
static Number[][] DoMask(Number[][] data, Number[][] mask, Number multiply) { var r = CloneArray(data); foreach (var d in GetArrayInfos(data)) { var rd = new ArrayDataInfo <Number>() { data = r, x = d.x, y = d.y }; var values = GetArrayInfos(mask).Select( m => { var dm = new ArrayDataInfo <Number>() { data = data, x = m.x + d.x, y = m.y + d.y, }; return(m.value.Multiply(dm.value)); }).ToArray(); var n = new Number() { numerator = 0, denominator = 1 }; foreach (var v in values) { n = n.Plus(v); } rd.value = n.Multiply(multiply); } return(r); }