Commit 1940012f authored by Davis King's avatar Davis King

Added the point_transform object

parent f3efbc31
...@@ -1287,6 +1287,38 @@ namespace dlib ...@@ -1287,6 +1287,38 @@ namespace dlib
double cos_angle; double cos_angle;
}; };
// ----------------------------------------------------------------------------------------
class point_transform
{
public:
point_transform (
const double& angle,
const dlib::vector<double,2>& translate_
)
{
sin_angle = std::sin(angle);
cos_angle = std::cos(angle);
translate = translate_;
}
template <typename T>
const dlib::vector<T,2> operator() (
const dlib::vector<T,2>& p
) const
{
double x = cos_angle*p.x() - sin_angle*p.y();
double y = sin_angle*p.x() + cos_angle*p.y();
return dlib::vector<double,2>(x,y) + translate;
}
private:
double sin_angle;
double cos_angle;
dlib::vector<double,2> translate;
};
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
template <typename T> template <typename T>
......
...@@ -431,6 +431,41 @@ namespace dlib ...@@ -431,6 +431,41 @@ namespace dlib
typedef vector<long,2> point; typedef vector<long,2> point;
// ----------------------------------------------------------------------------------------
class point_transform
{
/*!
WHAT THIS OBJECT REPRESENTS
This is an object that takes 2D points or vectors and
rotates them around the origin by a given angle and then
translates them.
!*/
public:
point_transform (
const double& angle,
const dlib::vector<double,2>& translate
)
/*!
ensures
- When (*this)(p) is invoked it will return a point P such that:
- P is the point p rotated counter-clockwise around the origin
angle radians and then shifted by having translate added to it.
(Note that this is counter clockwise with respect to the normal
coordinate system with positive y going up and positive x going
to the right)
!*/
template <typename T>
const dlib::vector<T,2> operator() (
const dlib::vector<T,2>& p
) const;
/*!
ensures
- rotates p, then translates it and returns the result
!*/
};
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
class point_rotator class point_rotator
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment