Monte Carlo Integration Library 1.0
High-performance Monte Carlo methods for numerical integration and optimization
geometry.hpp
Go to the documentation of this file.
1
9#ifndef MONTECARLO_1_GEOMETRY_HPP
10#define MONTECARLO_1_GEOMETRY_HPP
11
12
13#include <array>
14#include <cstddef>
15
21namespace mc::geom {
22
30template <int dim>
31class Point
32{
33public:
35 Point() { coords.fill(0.0); }
36
42 double& operator[](std::size_t i) { return coords[i]; }
43
49 double operator[](std::size_t i) const { return coords[i]; }
50
55 std::size_t dimension() const { return dim; }
56
57private:
58 std::array<double, dim> coords;
59};
60
68template <int dim>
69class Bounds
70{
71public:
76 {
77 for (std::size_t i = 0; i < dim; ++i)
78 {
79 bounds[i] = std::make_pair(0.0, 0.0);
80 }
81 }
82
88 const std::pair<double, double> &operator[](std::size_t i) const
89 {
90 return bounds[i];
91 }
92
98 std::pair<double, double> &operator[](std::size_t i)
99 {
100 return bounds[i];
101 }
102
103private:
104 std::array<std::pair<double, double>, dim> bounds;
105};
106
107
108} // namespace mc::geom
109
110#endif // MONTECARLO_1_GEOMETRY_HPP
N-dimensional axis-aligned bounding box.
Definition geometry.hpp:70
Bounds()
Default constructor initializing all bounds to [0,0].
Definition geometry.hpp:75
std::pair< double, double > & operator[](std::size_t i)
Non-const accessor for bounds along axis i.
Definition geometry.hpp:98
const std::pair< double, double > & operator[](std::size_t i) const
Const accessor for bounds along axis i.
Definition geometry.hpp:88
N-dimensional point representation.
Definition geometry.hpp:32
std::size_t dimension() const
Get the dimensionality of the point.
Definition geometry.hpp:55
Point()
Default constructor initializing all coordinates to 0.0.
Definition geometry.hpp:35
double & operator[](std::size_t i)
Non-const coordinate accessor.
Definition geometry.hpp:42
double operator[](std::size_t i) const
Const coordinate accessor.
Definition geometry.hpp:49
constexpr int dim
Default dimensionality for integration.
Definition main.cpp:36