Point_클래스

template<typename _Tp> class Point_
{
public:
    Point_();
    // 기본 생성자 x=0, y=0 으로 초기화 됩니다.
    Point_(_Tp _x, _Tp _y);
    // (_x,_y) 좌표를 인자로 받는 생성자. x=_x, y=_y로 초기화 됩니다.
    Point_(const Point_& pt);
    // 복사 생성자. x=pt.x, y=pt.y 로 초기화 됩니다.

    Point_& operator = (const Point_& pt);
    // 대입 연산자 재정의

    _Tp dot(const Point_& pt) const;
    // Point::dot() 멤버 함수는 두 점 사이의 내적(dot product)을 계산하여 반환합니다.
    double ddot(const Point_& pt) const;
    // Point::ddot() 멤버 함수는 두 점 사이의 내적을 실수형으로 계산하여 double 자료형으로 반환합니다.
    double cross(const Point_& pt) const;
    // Point::cross() 멤버 함수는 두 점 사이의 외적(cross product)을 반환합니다.
    bool inside(const Rect_<_Tp>& r) const;
    // Point::inside() 멤버 함수는 점의 좌표가 사각형 r 영역 안에 있으면 true를 반환합니다.

    _Tp x, y;
    // 멤버 변수. x는 x축 좌표, y는 y축 좌표를 나타냅니다.
};

typedef Point_<int> Point2i;
typedef Point_<int64> Point2l;
typedef Point_<float> Point2f;
typedef Point_<double> Point2d;
typedef Point2i Point;
// 다양한 자료형에 대한 Point_클래스 이름 재정의입니다.

Size_클래스

template<typename _Tp> class Size_
{
public:
    Size_();
    // 기본 생성자. width=0, height=0으로 초기화됩니다.
    Size_(_Tp _width, _Tp _height);
    // (_width, _height) 크기를 인자로 받는 생성자. width=_width, height=_height로 초기화됩니다.
    Size_(const Size_& sz);
    // 복사 생성자. width=sz.width, height=sz.height로 초기화됩니다.

    Size_& operator = (const Size_& sz);
    // 대입 연산자 재정의입니다.

    _Tp area() const;
    // Size::area() 멤버 함수는 사각형 크기에 해당하는 면적(width*height)을 반환합니다.
    bool empty() const;
    // Size::empty() 멤버 함수는 유효하지 않은 크기이면 true를 반환합니다.

    _Tp width, height;
    // 멤버 변수. width는 사각형 영역의 가로 크기, height는 사각형 영역의 세로 크기를 나타냅니다.
};

typedef Size_<int> Size2i;
typedef Size_<int64> Size2l;
typedef Size_<float> Size2f;
typedef Size_<double> Size2d;
typedef Size2i size;
// 다양한 자료형에 대한 Size_클래스 이름 재정의입니다.

Rect_클래스

template<typename _Tp> class Rect_
{
public:
    Rect_();
    // 기본 생성자. 모든 멤버 변수를 0으로 초기화합니다.
    Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height);
    // (_x, _y, _width, _height) 사각형 정보를 인자로 받는 생성자.  
    // x=_x, y=_y, width=_width, height=_height로 초기화합니다.
    Rect_(const Rect_& r);
    // 복사 생성자. x=r.x, y=r.y, width=r.width, height=r.height로 초기화합니다.
    Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz);
    // 좌측 상단 점의 좌표와 사각형의 크기 정보를 인자로 받는 생성자입니다.
    Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2);
    // 사각형에서 서로 대각 위치에 있는 두 점의 좌표를 인자로 받는 생성자입니다.

    Rect_& operator = (const Rect_& r);
    // 대입 연산자 재정의입니다.

    Point_<_Tp> tl() const;
    // Rect::tl() 멤버 함수는 사각형의 좌착 상단 점의 좌표를 반환합니다.
    Point_<_Tp> br() const;
    // Rect::br() 멤버 함수는 사각형의 우측 하단 점의 좌표를 반환합니다.
    Size_<_Tp> size() const;
    // Rect::Size() 멤버 함수는 사각형의 크기 정보를 반환합니다.
    _Tp area() const;
    // Rect::area() 멤버 함수는 사각형의 면적(width*height)을 반환합니다.
    bool empty() const;
    // Rect::empty() 멤버 함수는 유효하지 않은 사각형이면 true를 반환합니다.
    bool contains(const Point_<_Tp>& pt) const;
    // Rect::contains() 멤버 함수는 인자로 전달된 pt점이 사각형 내부에 있으면 true를 반환합니다.

    _Tp x, y, width, height;
    // 멤버 변수. x, y는 사각형 좌측 상단 점의 좌표, width, height는 사각형의 가로와 세로 크기를 나타냅니다.
};

typedef Rect_<int> Rect2i;
typedef Rect_<float> Rect2f;
typedef Rect_<double> Rect2d;
typedef Rect2i Rect;
// 다양한 자료형에 대하여 Rect_클래스 이름 재정의입니다.

RotatedRect 클래스

class RatetedRect
{
public:
    RotatedRect();
    // 기본 생성자. 모든 멤버 변수를 0으로 초기화합니다.
    RotatedRect(const Point2f& _center, const Size2f& _size, float _angle);
    // (_center, _size, _angle)을 인자로 받는 생성자.  
    // center=_center, size=_size, angle=_angle로 초기화합니다.
    RotatedRect(const Point2f& point1, const Point2f& point2, const Point2f& point3);
    // (point1, point2, point3)을 인자로 받는 생성자.
    // 인자로 전달된 세 점은 회전된 사각형의 세 꼭지점 좌표를 나타냅니다.

    void points(Point2f pts[]) const;
    // RotatedRect::points() 멤버 함수는 회전된 사각형은 네 꼭지점 좌표를 pts 인자에 저장합니다.
    Rect BoundingRect() const;
    // RotatedRect::boundingRect() 멤버 함수는 회전된 사각형을 포함하는
    // 최소 크기의 사각형 정보를 반환합니다.(정수 단위).
    Rect_<float> boundingRect2f() const;
    // RotatedRect::boundingRect2f() 멤버 함수는 회전된 사각형을 포함하는
    // 최소 크기의 사각형 정보를 반환합니다(실수단위).

    Point2f center;
    Size2f size;
    float angle;
    // 멤버 변수. center는 사각형의 중심 좌표, size는 사각형의 크기, angle은 시계 방향 회전 각도를 나타냅니다.
};

Range 클래스

class Range
{
public:
    Range();
    // 기본 생성자. start=end=0으로 초기화합니다.
    Range(int  _start, int _end);
    // 두 개의 정수를 인자로 받는 생성자. start=_start, end=_end로 초기화합니다.

    int size() const;
    // Range::size() 멤버 함수는 범위 크기(end-start)를 반환합니다.
    bool empty() const;
    // Range::empty() 멤버 함수는 start와 end가 같으면 true를 반환합니다.
    static Range all();
    // Range::all() 멤버 함수는 start=INT_MIN, end=INT_MAX로 설정한 Range 객체를 반환합니다.

    int start, end;
    // 멤버 변수. start는 시작, end는 범위의 끝을 나타냅니다.
};

String 클래스

String format(const char* fmt, ...);
  • fmt : 형식 문자열
  • … : 가변 인자
  • 반환값 : 지정한 형식으로 생성된 문자열

댓글남기기