Exemple #1
0
void pointQueries_ND(int items){
	std::vector< Rect<size> > rectangles;
	std::vector< Rect<size> > queries;
	unsigned int edge_size = (unsigned int)ceil(pow((double)items, 1.0 / (double)size));
	int no_iterations = std::max(max_elements / items, 10);
	generateRectangles(items, edge_size, rectangles);

	RTree<int, unsigned int, size, float> tree;

	for (size_t i = 0; i < rectangles.size(); ++i){
		tree.Insert(rectangles[i].min, rectangles[i].max, i);
		std::vector<unsigned int> min(size, i*tile_size+1);
		std::vector<unsigned int> max(size, i*tile_size+1);
		Rect<size> pointQuery(min, max);
		queries.push_back(pointQuery);
	}

	auto begin = std::chrono::high_resolution_clock::now();

	for (int i = 0; i < no_iterations; i++){
		for (size_t j = 0; j < queries.size(); j++){
			tree.Search(queries[j].min, queries[j].max, MySearchCallback, NULL);
		}
	}

	auto end = std::chrono::high_resolution_clock::now();

	of << "Running " << queries.size() << " point queries " << size << "D items:" << (double)std::chrono::duration_cast<std::chrono::microseconds>(end - begin).count() / (double)no_iterations << "ns" << std::endl;
}
Exemple #2
0
void
cpSpaceStaticShapePointQuery(cpSpace *space, cpVect point, cpSpacePointQueryFunc func, void *data)
{
	pointQuery(space->staticShapes, point, func, data);
}