void calResult(int mul, int add, List <BMNode> BMs) { for (int i = 0; i < BMs.Count; i++) { BMNode currNode = BMs[i]; bayer[currNode.x, currNode.y] *= mul; bayer[currNode.x, currNode.y] += add; } }
void BMGen(int n, int x, int y, List <BMNode> BMs) { if (n == 0) { BMNode node = new BMNode(x, y); BMs.Add(node); } else { List <BMNode> list00 = new List <BMNode>(); BMGen(n - 1, x, y, list00); calResult(4, 0, list00); List <BMNode> list11 = new List <BMNode>(); BMGen(n - 1, x + (1 << (n - 1)), y + (1 << (n - 1)), list11); calResult(4, 1, list11); List <BMNode> list01 = new List <BMNode>(); BMGen(n - 1, x, y + (1 << (n - 1)), list01); calResult(4, 2, list01); List <BMNode> list10 = new List <BMNode>(); BMGen(n - 1, x + (1 << (n - 1)), y, list10); calResult(4, 3, list10); foreach (BMNode node in list00) { BMs.Add(node); } foreach (BMNode node in list01) { BMs.Add(node); } foreach (BMNode node in list11) { BMs.Add(node); } foreach (BMNode node in list10) { BMs.Add(node); } } }