DNA Calib 1.1
Project brief
BoundingBox.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "dnacalib/TypeDefs.h"
7
8#include <iterator>
9#include <limits>
10
11namespace dnac {
12
14 public:
15 static constexpr float defaultAlpha = 0.0003f;
16
17 private:
18 template<typename TIter>
19 using unqualified_iter_value_type = typename std::remove_cv<typename std::iterator_traits<TIter>::value_type>::type;
20
21 public:
22 template<typename TIter,
23 typename std::enable_if<
24 std::is_same<unqualified_iter_value_type<TIter>, fvec2>::value, void>::type* = nullptr>
25 BoundingBox(TIter begin, TIter end, float alpha) :
26 min{std::numeric_limits<float>::max(), std::numeric_limits<float>::max()},
27 max{std::numeric_limits<float>::min(), std::numeric_limits<float>::min()} {
28
29 for (auto it = begin; it < end; it++) {
30 const auto& vertex = *it;
31 min[0] = std::min(vertex[0], min[0]);
32 min[1] = std::min(vertex[1], min[1]);
33 max[0] = std::max(vertex[0], max[0]);
34 max[1] = std::max(vertex[1], max[1]);
35 }
36 min -= alpha;
37 max += alpha;
38 }
39
40 template<typename TContainer>
41 explicit BoundingBox(TContainer container, float alpha = defaultAlpha) :
42 BoundingBox(std::begin(container), std::end(container), alpha) {
43 }
44
45 bool contains(const fvec2& point) const {
46 return point[0] >= min[0] && point[0] <= max[0] &&
47 point[1] >= min[1] && point[1] <= max[1];
48 }
49
50 fvec2 getMin() const {
51 return min;
52 }
53
54 fvec2 getMax() const {
55 return max;
56 }
57
58 private:
61};
62
63} // namespace dnac
Definition: BoundingBox.h:13
fvec2 getMin() const
Definition: BoundingBox.h:50
fvec2 getMax() const
Definition: BoundingBox.h:54
typename std::remove_cv< typename std::iterator_traits< TIter >::value_type >::type unqualified_iter_value_type
Definition: BoundingBox.h:19
BoundingBox(TIter begin, TIter end, float alpha)
Definition: BoundingBox.h:25
BoundingBox(TContainer container, float alpha=defaultAlpha)
Definition: BoundingBox.h:41
fvec2 min
Definition: BoundingBox.h:59
static constexpr float defaultAlpha
Definition: BoundingBox.h:15
fvec2 max
Definition: BoundingBox.h:60
bool contains(const fvec2 &point) const
Definition: BoundingBox.h:45
Definition: Command.h:8
Definition: Vec.h:10