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

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