BVH_Example.cpp File Reference
#include <Eigen/StdVector>
#include <unsupported/Eigen/BVH>
#include <iostream>

Classes

struct  PointPointMinimizer
 

Namespaces

 Eigen
 Namespace containing all symbols from the Eigen library.
 

Typedefs

typedef AlignedBox< double, 2 > Box2d
 

Functions

Box2d Eigen::bounding_box (const Vector2d &v)
 
int main ()
 

Typedef Documentation

◆ Box2d

typedef AlignedBox<double, 2> Box2d

Function Documentation

◆ main()

int main ( )
37  {
38  typedef std::vector<Vector2d, aligned_allocator<Vector2d> > StdVectorOfVector2d;
39  StdVectorOfVector2d redPoints, bluePoints;
40  for (int i = 0; i < 100; ++i) { // initialize random set of red points and blue points
41  redPoints.push_back(Vector2d::Random());
42  bluePoints.push_back(Vector2d::Random());
43  }
44 
45  PointPointMinimizer minimizer;
46  double minDistSq = std::numeric_limits<double>::max();
47 
48  // brute force to find closest red-blue pair
49  for (int i = 0; i < (int)redPoints.size(); ++i)
50  for (int j = 0; j < (int)bluePoints.size(); ++j)
51  minDistSq = std::min(minDistSq, minimizer.minimumOnObjectObject(redPoints[i], bluePoints[j]));
52  std::cout << "Brute force distance = " << sqrt(minDistSq) << ", calls = " << minimizer.calls << std::endl;
53 
54  // using BVH to find closest red-blue pair
55  minimizer.calls = 0;
56  KdBVH<double, 2, Vector2d> redTree(redPoints.begin(), redPoints.end()),
57  blueTree(bluePoints.begin(), bluePoints.end()); // construct the trees
58  minDistSq = BVMinimize(redTree, blueTree, minimizer); // actual BVH minimization call
59  std::cout << "BVH distance = " << sqrt(minDistSq) << ", calls = " << minimizer.calls << std::endl;
60 
61  return 0;
62 }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
int i
Definition: BiCGSTAB_step_by_step.cpp:9
A simple bounding volume hierarchy based on AlignedBox.
Definition: KdBVH.h:68
#define min(a, b)
Definition: datatypes.h:22
#define max(a, b)
Definition: datatypes.h:23
return int(ret)+1
Minimizer::Scalar BVMinimize(const BVH &tree, Minimizer &minimizer)
Definition: BVAlgorithms.h:217
Definition: BVH_Example.cpp:13
int calls
Definition: BVH_Example.cpp:34
double minimumOnObjectObject(const Vector2d &v1, const Vector2d &v2)
Definition: BVH_Example.cpp:29
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References Eigen::BVMinimize(), PointPointMinimizer::calls, i, int(), j, max, min, PointPointMinimizer::minimumOnObjectObject(), and sqrt().