Esempio n. 1
0
 void do_insert_data(T data, box2d<double> const& box, node * n, unsigned int& depth)
 {
     if (++depth >= max_depth_)
     {
         n->cont_.push_back(data);
     }
     else
     {
         box2d<double> const& node_extent = n->extent();
         box2d<double> ext[4];
         split_box(node_extent,ext);
         for (int i=0;i<4;++i)
         {
             if (ext[i].contains(box))
             {
                 if (!n->children_[i])
                 {
                     nodes_.push_back(new node(ext[i]));
                     n->children_[i]=&nodes_.back();
                 }
                 do_insert_data(data,box,n->children_[i],depth);
                 return;
             }
         }
         n->cont_.push_back(data);
     }
 }
Esempio n. 2
0
PRIVATE     VOID
sel_palette(int blocks, int distinct, struct rgb *my_color_pt)
{
    int         boxes;
    /*  int i, j; */
    struct box *ptr;

    init(blocks, distinct, my_color_pt);

    /* split box into smaller boxes with about equal number of points */
    for (boxes = 1; boxes < PALSIZE; boxes++)
      {
          /*
             ptr=frontier->right;
             j = 0;
             while (ptr != NULL)
             {
             printf("Box %d, distinct %d, total %d\n",j,ptr->nmbr_distinct,
             ptr->nmbr_pts);
             for (i=0; i<ptr->nmbr_distinct; i++)
             printf("pt %d: %d %d %d",i,distinct_pt[ptr->pts[i]].c[RED],
             distinct_pt[ptr->pts[i]].c[GREEN],
             distinct_pt[ptr->pts[i]].c[BLUE]);
             j++;
             ptr = ptr->right;
             }
           */

          ptr = find_box();
          split_box(ptr);
      }

    assign_color();
}
Esempio n. 3
0
    void do_insert_data(T data, SkRect& box, node * n, unsigned int& depth)
    {
        if (++depth >= max_depth) {
			n->data.push_back(data);
		} else {
			SkRect& node_extent = n->bounds;
			SkRect ext[4];
			split_box(node_extent, ext);
			for (int i = 0; i < 4; ++i) {
				if (ext[i].contains(box)) {
					if (!n->children[i]) {
						n->children[i] = new node(ext[i]);
					}
					do_insert_data(data, box, n->children[i], depth);
					return;
				}
			}
			n->data.push_back(data);
		}
    }