Example #1
0
        //level - depth level
        public void AddColor(Color color, int level, OctreeQuantizer parent)
        {
            // if this node is a leaf, then increase a color amount, and pixel presence
            if (level == 8)
            {
                red += color.R;
                green += color.G;
                blue += color.B;
                pixelCount++;
            }
            else if (level < 8) // otherwise goes one level deeper
            {
                // calculates an index for the next sub-branch
                int index = GetColorIndexAtLevel(color, level); //current level

                // if that branch doesn't exist, grows it
                if (nodes[index] == null)
                {
                    nodes[index] = new OctreeNode(level, parent);
                }

                // adds a color to that branch
                nodes[index].AddColor(color, level + 1, parent);
            }
        }
Example #2
0
 private void prepare()
 {
     levels = new List<OctreeNode>[7];
     // creates the octree level lists
     for (Int32 level = 0; level < 7; level++)
     {
         levels[level] = new List<OctreeNode>();
     }
     root = new OctreeNode(0, this);
 }
Example #3
0
 public void Init()
 {
     levels = new List<OctreeNode>[7];
     // creates the octree level lists
     for (Int32 level = 0; level < 7; level++)
     {
         levels[level] = new List<OctreeNode>();
     }
     root = new OctreeNode(0, this);
 }
Example #4
0
 internal void AddLevelNode(int level, OctreeNode octreeNode)
 {
     levels[level].Add(octreeNode);
 }
Example #5
0
 internal void AddLevelNode(int level, OctreeNode octreeNode)
 {
     levels[level].Add(octreeNode);
 }