This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center。
7年前关闭。
对于我的任务,我有一个很奇怪的问题,我想知道如何准确地解决。
问题问:
创建一个基类Shape,它将构成形状的基础。 Shape类将包含用于计算形状的面积和周长的函数,并提供包围该形状(边界框)的矩形的坐标(点)。这些将在必要时由派生类重载。创建一个display()函数,该函数将显示类的名称以及有关该类的所有存储信息(包括面积,周长和边界框)。
通过创建Shape类Circle,Square和Triangle来构建层次结构。对于这些派生类,创建默认的构造函数和其构造函数可以使用正确数量的Point对象适当初始化形状的构造函数(即,Circle需要一个Point中心和一个半径; Square需要四个Point顶点,而Triangle需要三个Point顶点)。
在
因此,我需要找出将创建一个边长为10、20、30的三角形的点。
输入:
这是我的Triangle代码:
这是输出:
在围绕该三角形,边为10、20、30或任何三角形的边界上创建边界框的最佳方法是什么?
所以,就你而言
7年前关闭。
对于我的任务,我有一个很奇怪的问题,我想知道如何准确地解决。
问题问:
创建一个基类Shape,它将构成形状的基础。 Shape类将包含用于计算形状的面积和周长的函数,并提供包围该形状(边界框)的矩形的坐标(点)。这些将在必要时由派生类重载。创建一个display()函数,该函数将显示类的名称以及有关该类的所有存储信息(包括面积,周长和边界框)。
通过创建Shape类Circle,Square和Triangle来构建层次结构。对于这些派生类,创建默认的构造函数和其构造函数可以使用正确数量的Point对象适当初始化形状的构造函数(即,Circle需要一个Point中心和一个半径; Square需要四个Point顶点,而Triangle需要三个Point顶点)。
在
main()
中,创建以下每个实例:半径为23的圆,边为25的正方形和边为10、20、30的三角形。定义所有边,使原点(0,0 )在每个对象中的某个位置。显示每个对象的信息。因此,我需要找出将创建一个边长为10、20、30的三角形的点。
输入:
Triangle t(Point(0,0), Point(0,20), Point(0,30));
这是我的Triangle代码:
class Triangle : public Shape
{
Point s1, s2, s3;
public:
Triangle() {}
Triangle(const Point &p1, const Point &p2, const Point &p3) : s1(p1), s2(p2), s3(p3) {}
void bbox()
{
std::cout << "Triangle::bounding " << s1 << s2 << s3;
}
void circumference()
{
Point side1 = (s1 - s2);
Point side2 = (s2 - s3);
Point side3 = (s3 - s1);
std::cout << "Triangle::perimeter " << side1.dist() + side2.dist() + side3.dist();
}
void area()
{
Point side1 = (s1 - s2);
Point side2 = (s2 - s3);
Point side3 = (s3 - s1);
double half = (side1.dist() + side2.dist() + side3.dist())/2;
double answer = sqrt(half * (half - side1.dist()) * (half - side2.dist()) * (half - side3.dist()));
std::cout << "Triangle::area " << answer;
}
};
这是输出:
Triangle::bounding (0,0)(0,20)(0,30)
Triangle::perimeter 60
Triangle::area 0
在围绕该三角形,边为10、20、30或任何三角形的边界上创建边界框的最佳方法是什么?
最佳答案
没有三角形的边10,20,30的边非零,因此您声明的是正确的:
三角形:: bounding(0,0)(0,20)(0,30)
三角形::周长60
三角形::区域0
但是您在该列表中所称的边界是三角形的角,而不是边界框。
如果实际上应将此形状称为三角形是一个定义的问题,但是由于这是问题的内在根源,因此我不会对此进行过多考虑。您的老师正在试图让您感到困惑,或者他/她没有想到。
围绕(好,触摸)任何多边形的边界框是带有角的矩形
(xmin,ymin)-(xmin,ymax)-(xmax,ymax)-(xmax,ymin)
所以,就你而言
(0,0) - (0,30) - (0,30) - (0,0)
关于c++ - 建立一个三角形的形状类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11713123/