运用空间三角形的封装完成任务:虚函数计算面积;虚函数判断三角形的类型:锐角三角形,直角三角形,钝角三角形;虚函数计算三角形的重心、垂心、外心、内心;虚函数计算任一点和该三角形的关系:点在三角形外面,点在三角形内部,点在三角形边上;纯虚函数计算直线和三角形的交点。
时间: 2024-03-02 15:48:20 浏览: 129
利用虚函数计算各种图形面积
5星 · 资源好评率100%
好的,我会尽我所能回答你的问题。
对于这个任务,我们可以定义一个基类 Triangle,并在其内部定义虚函数来完成面积计算、三角形类型判断、重心、垂心、外心、内心计算,以及点和三角形的关系判断。此外,我们还可以定义一个纯虚函数来计算直线和三角形的交点。
具体实现如下:
```c++
class Triangle {
public:
virtual double getArea() = 0;
virtual string getType() = 0;
virtual Point getCentroid() = 0;
virtual Point getOrthocenter() = 0;
virtual Point getCircumcenter() = 0;
virtual Point getIncenter() = 0;
virtual string getPointRelation(Point p) = 0;
virtual vector<Point> getIntersection(Line l) = 0;
protected:
Point a, b, c;
};
class AcuteTriangle : public Triangle {
public:
AcuteTriangle(Point _a, Point _b, Point _c) {
a = _a, b = _b, c = _c;
}
double getArea() {
// 计算面积
}
string getType() {
// 判断三角形类型
}
Point getCentroid() {
// 计算重心
}
Point getOrthocenter() {
// 计算垂心
}
Point getCircumcenter() {
// 计算外心
}
Point getIncenter() {
// 计算内心
}
string getPointRelation(Point p) {
// 判断点和三角形的关系
}
vector<Point> getIntersection(Line l) {
// 计算直线和三角形的交点
}
};
class RightTriangle : public Triangle {
public:
RightTriangle(Point _a, Point _b, Point _c) {
a = _a, b = _b, c = _c;
}
double getArea() {
// 计算面积
}
string getType() {
// 判断三角形类型
}
Point getCentroid() {
// 计算重心
}
Point getOrthocenter() {
// 计算垂心
}
Point getCircumcenter() {
// 计算外心
}
Point getIncenter() {
// 计算内心
}
string getPointRelation(Point p) {
// 判断点和三角形的关系
}
vector<Point> getIntersection(Line l) {
// 计算直线和三角形的交点
}
};
class ObtuseTriangle : public Triangle {
public:
ObtuseTriangle(Point _a, Point _b, Point _c) {
a = _a, b = _b, c = _c;
}
double getArea() {
// 计算面积
}
string getType() {
// 判断三角形类型
}
Point getCentroid() {
// 计算重心
}
Point getOrthocenter() {
// 计算垂心
}
Point getCircumcenter() {
// 计算外心
}
Point getIncenter() {
// 计算内心
}
string getPointRelation(Point p) {
// 判断点和三角形的关系
}
vector<Point> getIntersection(Line l) {
// 计算直线和三角形的交点
}
};
```
其中,我们定义了三个派生类 AcuteTriangle、RightTriangle 和 ObtuseTriangle,分别表示锐角三角形、直角三角形和钝角三角形。这些派生类都继承了 Triangle 的虚函数,并且根据其自身特点进行了实现。
在实际使用时,我们可以根据给定的三个点构造出一个 Triangle 对象,并调用其相应的虚函数来完成任务。
阅读全文