Blender V4.3
libmv/autotrack/region.h
Go to the documentation of this file.
1// Copyright (c) 2014 libmv authors.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a copy
4// of this software and associated documentation files (the "Software"), to
5// deal in the Software without restriction, including without limitation the
6// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7// sell copies of the Software, and to permit persons to whom the Software is
8// furnished to do so, subject to the following conditions:
9//
10// The above copyright notice and this permission notice shall be included in
11// all copies or substantial portions of the Software.
12//
13// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19// IN THE SOFTWARE.
20//
21// Author: mierle@gmail.com (Keir Mierle)
22
23#ifndef LIBMV_AUTOTRACK_REGION_H_
24#define LIBMV_AUTOTRACK_REGION_H_
25
27
28namespace mv {
29
30using libmv::Vec2f;
31
32// A region is a bounding box within an image.
33//
34// +----------> x
35// |
36// | (min.x, min.y) (max.x, min.y)
37// | +-------------------------+
38// | | |
39// | | |
40// | | |
41// | +-------------------------+
42// v (min.x, max.y) (max.x, max.y)
43// y
44//
45struct Region {
46 Vec2f min;
47 Vec2f max;
48
49 template <typename T>
50 void Offset(const T& offset) {
51 min += offset.template cast<float>();
52 max += offset.template cast<float>();
53 }
54
55 Region Rounded() const {
57 result.min(0) = ceil(this->min(0));
58 result.min(1) = ceil(this->min(1));
59 result.max(0) = ceil(this->max(0));
60 result.max(1) = ceil(this->max(1));
61 return result;
62 }
63};
64
65} // namespace mv
66
67#endif // LIBMV_AUTOTRACK_REGION_H_
ccl_device_inline float3 ceil(const float3 a)
ccl_device_inline int4 cast(const float4 a)
Definition math_float4.h:29
Eigen::Vector2f Vec2f
Definition numeric.h:125
Region Rounded() const
void Offset(const T &offset)