C++ Hình Họa Không Gian: C++ Circle
Hi, chào mừng các bạn đến với chủ đề : c++ hình họa không gian.
Bài hôm nay chúng ta sẽ cùng nghiên cứu về một đối tượng hình học cũng quan trọng không thể thiếu.
Đó là đường tròn. Khi chúng ta có line, point, rect, polygon, triangle, thì không thể thiếu circle.
1. Lý thuyết cơ bản.
a. Tính chất của cirlce.
– Đường tròn được thể hiển bởi 1 điểm và giá trị bán kính hoặc đường kính.
– Do đó chúng ta cần 2 trường dữ liệu.
+ 1 điểm point2d thể hiện tâm đường tròn
+ 1 giá trị float thể hiện bán kính r.
b. Các hàm xử lý.
– Hàm khởi tạo/hàm hủy cơ bản
– Hàm get/set điểm tâm của circle
– Hàm get/set bán kính của circle
– Hàm tính chu vi/diện tích của circle
– Hàm check 1 điểm có nằm trên cirlce hay không ?
– Hàm check 1 điểm nằm ngoài hay bên trong circle.
– Các hàm mà bạn có thể nghĩ ra dùng cho mục đích của bạn.
2. Code sample
a. File Header
#ifndef TCIRCLE_H_ #define TCIRCLE_H_ #include "TPoint2D.h" #define T_PI 3.14159265358979323846 // pi class TCircle { public: TCircle(); TCircle(const TPoint2D& p, const float& rad); ~TCircle(); void SetRadius(float rad) { m_radius = rad; } void SetCenterPoint(const TPoint2D& p) { m_center = p; } float GetRadius() const { return m_radius; } TPoint2D GetCenterPoint() { return m_center; } float GetArea(); float GetPerimeter(); int CheckRelPoint(const TPoint2D& p); private: TPoint2D m_center; float m_radius; }; #endif
b. File Cpp
#include "TCircle.h" TCircle::TCircle() { } TCircle::TCircle(const TPoint2D& p, const float& rad) { m_center = p; m_radius = rad; } TCircle::~TCircle() { } float TCircle::GetArea() { float s = m_radius*m_radius*T_PI; return s; } float TCircle::GetPerimeter() { float c = 2 * m_radius*T_PI; return c; } ////////////////////////////////////////////////////////////////////////// // return -1: no define // return 0: inside // return 1: on circle // return 2: outside // Note: Same z. ////////////////////////////////////////////////////////////////////////// int TCircle::CheckRelPoint(const TPoint2D& p) { float d = m_center.GetDistance(p); if (fabs(d - m_radius) <= TEXP_4) { return 1; } if (fabs(d - m_radius) > TEXP_4 && d > m_radius) { return 2; } if (fabs(d - m_radius) > TEXP_4 && d < m_radius) { return 0; } return -1; }
Ok. Đó là cách xây dựng một đối tượng đường tròn