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절에서 자세히 설명합니다.

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