더북(TheBook)

3.1.1 Point_ 클래스

OpenCV에서 제공하는 여러 자료형 클래스 중에서 먼저 Point_ 클래스에 대해 알아보겠습니다. Point_ 클래스는 2차원 평면 위에 있는 점의 좌표를 표현하는 템플릿 클래스입니다.1 Point_ 클래스는 2차원 좌표를 나타내는 xy라는 이름의 멤버 변수를 가지고 있습니다. 간략화한 Point_ 클래스 정의를 코드 3-1에 나타냈습니다.

코드 3-1 간략화한 Point_ 클래스 정의와 이름 재정의

01    template<typename _Tp> class Point_
02    {
03    public:
04        Point_();
05        Point_(_Tp _x, _Tp _y);
06        Point_(const Point_& pt);
07     
08        Point_& operator = (const Point_& pt);
09     
10        _Tp dot(const Point_& pt) const;
11        double ddot(const Point_& pt) const;
12        double cross(const Point_& pt) const;
13        bool inside(const Rect_<_Tp>& r) const;
14        ...
15     
16        _Tp x, y;
17    };
18     
19    typedef Point_<int>    Point2i;
20    typedef Point_<int64>  Point2l;
21    typedef Point_<float>  Point2f;
22    typedef Point_<double> Point2d;
23    typedef Point2i        Point;

 

4행 기본 생성자. x = 0, y = 0으로 초기화됩니다.

5행 (_x, _y) 좌표를 인자로 받는 생성자. x = _x, y = _y로 초기화됩니다.

6행 복사 생성자. x = pt.x, y = pt.y로 초기화됩니다.

8행 대입 연산자 재정의입니다.

10행 Point::dot() 멤버 함수는 두 점 사이의 내적(dot product)을 계산하여 반환합니다.

11행 Point::ddot() 멤버 함수는 두 점 사이의 내적을 실수형으로 계산하여 double 자료형으로 반환합니다.

12행 Point::cross() 멤버 함수는 두 점 사이의 외적(cross product)을 반환합니다.

13행 Point::inside() 멤버 함수는 점의 좌표가 사각형 r 영역 안에 있으면 true를 반환합니다.2

16행 멤버 변수. x는 x축 좌표, y는 y축 좌표를 나타냅니다.

19~23행 다양한 자료형에 대한 Point_ 클래스 이름 재정의입니다.

 

1 이 책에서는 템플릿 클래스(template class)를 클래스 템플릿(class template)과 같은 의미로 사용합니다.

 

2 Rect_ 클래스는 사각형의 위치와 크기를 표현하는 클래스이며, 3.1.3절에서 자세히 설명합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.