设计一个点类 Point 和一个线类 Line , Line 中含有 Point 的类对象。 Line 中有一个判断 3 个点是否在同一条直线上的函数。
时间: 2024-11-09 15:20:07 浏览: 17
LBL-PBP.rar_CFD_LBL_The Point_line by line
设计一个点类 Point 和一个线类 Line,我们可以这样开始:
首先,定义点类 Point,包含两个属性通常代表二维空间中的坐标,比如 x 和 y 坐标:
```cpp
class Point {
public:
double x;
double y;
// 构造函数
Point(double xCoord, double yCoord)
: x(xCoord), y(yCoord) {}
// 其他可能的方法,如获取坐标字符串表示等
std::string toString() const { return "Point(" + std::to_string(x) + ", " + std::to_string(y) + ")"; }
};
```
接着,定义线类 Line,它包含两个点对象(通常是起点和终点),以及一个成员函数 `isCollinear` 来判断三个点是否共线:
```cpp
class Line {
private:
Point start;
Point end;
public:
// 构造函数接受两个点
Line(Point startPt, Point endPt) : start(startPt), end(endPt) {}
// 判断三点是否在同一直线上
bool isCollinear(const Point& point) const {
// 可能的判断逻辑:两点确定一条直线,第三点若在线上,则斜率相等(排除x轴特殊情况)
if (std::abs(point.x - start.x) == std::abs(point.y - start.y)) {
return true;
} else if (std::abs(point.x - end.x) == std::abs(point.y - end.y)) {
return true;
}
// 更复杂的判断可能还需要计算斜率或方向余弦
return false;
}
// 也可以提供其他操作,如计算长度、斜率等
};
```
阅读全文