#include <iostream>
#include <cmath>
class Point {
private:
double x;
double y;
public:
// 构造函数
Point(double xCoord = 0.0, double yCoord = 0.0) : x(xCoord), y(yCoord) {}
// 获取 x 坐标
double getX() const { return x; }
// 获取 y 坐标
double getY() const { return y; }
// 设置 x 坐标
void setX(double newX) { x = newX; }
// 设置 y 坐标
void setY(double newY) { y = newY; }
// 计算到另一点的距离
double distanceTo(const Point& otherPoint) const {
double dx = x - otherPoint.x;
double dy = y - otherPoint.y;
return sqrt(dx * dx + dy * dy);
}
};
class LineSegment {
private:
Point startPoint;
Point endPoint;
public:
// 构造函数
LineSegment(const Point& start, const Point& end) : startPoint(start), endPoint(end) {}
// 计算线段长度
double length() const {
return startPoint.distanceTo(endPoint);
}
// 计算线段中点
Point midpoint() const {
double midX = (startPoint.getX() + endPoint.getX()) / 2;
double midY = (startPoint.getY() + endPoint.getY()) / 2;
return Point(midX, midY);
}
};
int main() {
// 创建起点和终点
Point start(0.0, 0.0);
Point end(3.0, 4.0);
// 创建线段对象
LineSegment line(start, end);
// 输出线段长度
std::cout << "线段长度: " << line.length() << std::endl;
// 输出线段中点坐标
Point mid = line.midpoint();
std::cout << "线段中点坐标: (" << mid.getX() << ", " << mid.getY() << ")" << std::endl;
return 0;
}