3.1.1 Point_ 클래스
OpenCV에서 제공하는 여러 자료형 클래스 중에서 먼저 Point_ 클래스에 대해 알아보겠습니다. Point_ 클래스는 2차원 평면 위에 있는 점의 좌표를 표현하는 템플릿 클래스입니다.1 Point_ 클래스는 2차원 좌표를 나타내는 x와 y라는 이름의 멤버 변수를 가지고 있습니다. 간략화한 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절에서 자세히 설명합니다.