42 for (
unsigned int d = 0; d < 3; ++d) {
49 for (
unsigned int d = 0; d < 3; ++d) {
58 boost::optional<Vector_t<double, 3>> result = boost::none;
59 double minDistance = std::numeric_limits<double>::max();
62 for (
unsigned int d = 0; d < 3; ++d) {
76 for (
unsigned int i = 1; i < 3; ++i) {
77 unsigned int idx = (d + i) % 3;
78 if (relativeP[idx] < 0 || relativeP[idx] > dimensions[idx]) {
84 Vector<double, 3> d = pointOnPlane - position;
86 if (distance < minDistance) {
87 minDistance = distance;
88 result = pointOnPlane;
103 for (
unsigned int d = 0; d < 3; ++d) {
104 if (relPosition[d] < 0 || relPosition[d] > dimensions[d])
111 int prePrecision = output.precision();
112 output << std::setprecision(8);
113 output <<
"Bounding box\n"
116 output.precision(prePrecision);
double dot(const Vector3D &lhs, const Vector3D &rhs)
Vector dot product.
ippl::Vector< T, Dim > Vector_t
KOKKOS_INLINE_FUNCTION double euclidean_norm(const Vector_t< T, D > &v)
void print(std::ostream &output) const
Vector_t< double, 3 > lowerLeftCorner_m
boost::optional< Vector_t< double, 3 > > getIntersectionPoint(const Vector_t< double, 3 > &position, const Vector_t< double, 3 > &direction) const
Vector_t< double, 3 > upperRightCorner_m
bool isInside(const Vector_t< double, 3 > &position) const
void enlargeToContainPosition(const Vector_t< double, 3 > &position)
static BoundingBox getBoundingBox(const std::vector< Vector_t< double, 3 > > &positions)
void enlargeToContainBoundingBox(const BoundingBox &boundingBox)