removed inline, changed interface
This commit is contained in:
parent
a879e1fcd6
commit
b939b4ae3b
@ -392,7 +392,7 @@ public:
|
|||||||
//! various constructors
|
//! various constructors
|
||||||
RotatedRect();
|
RotatedRect();
|
||||||
RotatedRect(const Point2f& center, const Size2f& size, float angle);
|
RotatedRect(const Point2f& center, const Size2f& size, float angle);
|
||||||
RotatedRect(const std::vector<Point2f>& points);
|
RotatedRect(const Point2f& point1, const Point2f& point2, const Point2f& point3);
|
||||||
|
|
||||||
//! returns 4 vertices of the rectangle
|
//! returns 4 vertices of the rectangle
|
||||||
void points(Point2f pts[]) const;
|
void points(Point2f pts[]) const;
|
||||||
@ -1548,31 +1548,6 @@ inline
|
|||||||
RotatedRect::RotatedRect(const Point2f& _center, const Size2f& _size, float _angle)
|
RotatedRect::RotatedRect(const Point2f& _center, const Size2f& _size, float _angle)
|
||||||
: center(_center), size(_size), angle(_angle) {}
|
: center(_center), size(_size), angle(_angle) {}
|
||||||
|
|
||||||
inline
|
|
||||||
RotatedRect::RotatedRect(const std::vector<Point2f>& _points)
|
|
||||||
{
|
|
||||||
CV_Assert( _points.size() == 3 );
|
|
||||||
Point2f _center = 0.5f * (_points[0] + _points[2]);
|
|
||||||
Vec2f vecs[2];
|
|
||||||
vecs[0] = Vec2f(_points[0] - _points[1]);
|
|
||||||
vecs[1] = Vec2f(_points[1] - _points[2]);
|
|
||||||
// check that given sides are perpendicular
|
|
||||||
CV_Assert( abs(vecs[0].dot(vecs[1])) <= 0.001 );
|
|
||||||
|
|
||||||
// wd_i stores which vector (0,1) or (1,2) will make the width
|
|
||||||
// One of them will definitely have slope within -1 to 1
|
|
||||||
int wd_i = 0;
|
|
||||||
if( vecs[1][0] != 0 && fabs(vecs[1][1] / vecs[1][0]) <= 1.0f ) wd_i = 1;
|
|
||||||
int ht_i = (wd_i + 1) % 2;
|
|
||||||
|
|
||||||
float _angle = atan(vecs[wd_i][1] / vecs[wd_i][0]) * 180.0f / (float) CV_PI;
|
|
||||||
float _width = (float) norm(vecs[wd_i]);
|
|
||||||
float _height = (float) norm(vecs[ht_i]);
|
|
||||||
|
|
||||||
center = _center;
|
|
||||||
size = Size2f(_width, _height);
|
|
||||||
angle = _angle;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////// Range /////////////////////////////////
|
///////////////////////////////// Range /////////////////////////////////
|
||||||
|
@ -5204,6 +5204,30 @@ void normalize( const SparseMat& src, SparseMat& dst, double a, int norm_type )
|
|||||||
|
|
||||||
////////////////////// RotatedRect //////////////////////
|
////////////////////// RotatedRect //////////////////////
|
||||||
|
|
||||||
|
RotatedRect::RotatedRect(const Point2f& _point1, const Point2f& _point2, const Point2f& _point3)
|
||||||
|
{
|
||||||
|
Point2f _center = 0.5f * (_point1 + _point3);
|
||||||
|
Vec2f vecs[2];
|
||||||
|
vecs[0] = Vec2f(_point1 - _point2);
|
||||||
|
vecs[1] = Vec2f(_point2 - _point3);
|
||||||
|
// check that given sides are perpendicular
|
||||||
|
CV_Assert( abs(vecs[0].dot(vecs[1])) <= 0.001 );
|
||||||
|
|
||||||
|
// wd_i stores which vector (0,1) or (1,2) will make the width
|
||||||
|
// One of them will definitely have slope within -1 to 1
|
||||||
|
int wd_i = 0;
|
||||||
|
if( vecs[1][0] != 0 && abs(vecs[1][1] / vecs[1][0]) <= 1.0f ) wd_i = 1;
|
||||||
|
int ht_i = (wd_i + 1) % 2;
|
||||||
|
|
||||||
|
float _angle = atan(vecs[wd_i][1] / vecs[wd_i][0]) * 180.0f / (float) CV_PI;
|
||||||
|
float _width = (float) norm(vecs[wd_i]);
|
||||||
|
float _height = (float) norm(vecs[ht_i]);
|
||||||
|
|
||||||
|
center = _center;
|
||||||
|
size = Size2f(_width, _height);
|
||||||
|
angle = _angle;
|
||||||
|
}
|
||||||
|
|
||||||
void RotatedRect::points(Point2f pt[]) const
|
void RotatedRect::points(Point2f pt[]) const
|
||||||
{
|
{
|
||||||
double _angle = angle*CV_PI/180.;
|
double _angle = angle*CV_PI/180.;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user