21xrx.com
2024-09-20 00:15:32 Friday
登录
文章检索 我的文章 写文章
C++实现平面四边形类的定义
2023-06-28 13:13:27 深夜i     --     --
C++ 平面四边形 定义

C++语言是面向对象的编程语言,可以通过define、class、struct等方式来定义不同种类的类。其中,平面四边形类就是一种常见的类定义方式,用于表示平面上的四边形对象。在C++中实现平面四边形类的定义需要注意以下几个方面:

1、定义四边形点的数据结构

四边形有四个顶点,因此需要定义四个点的数据结构。可以使用结构体struct来定义一个点的坐标,如下:

struct Point

  double x;

  double y;

;

2、定义四边形类

定义一个四边形类,可以在类中定义四个点以及它们的坐标信息。同时还可以定义一些方法,如计算周长、面积和判断四边形形态的方法等。定义类的方式如下:

class Quadrilateral {

public:

  Quadrilateral(Point p1, Point p2, Point p3, Point p4); //构造函数

  double perimeter(); //计算周长

  double area(); //计算面积

  bool isRectangle(); //判断是否为矩形

private:

  Point m_p1; //四边形点1

  Point m_p2; //四边形点2

  Point m_p3; //四边形点3

  Point m_p4; //四边形点4

};

3、定义四边形类中的方法

定义四边形类的方法,通常需要使用类似于this指针的方法,将类成员变量作为参数进行运算。方法定义如下:

Quadrilateral::Quadrilateral(Point p1, Point p2, Point p3, Point p4)

  m_p1 = p1;

  m_p2 = p2;

  m_p3 = p3;

  m_p4 = p4;

double Quadrilateral::perimeter() {

  double a, b, c, d;

  a = sqrt((m_p1.x - m_p2.x) * (m_p1.x - m_p2.x) + (m_p1.y - m_p2.y) * (m_p1.y - m_p2.y));

  b = sqrt((m_p2.x - m_p3.x) * (m_p2.x - m_p3.x) + (m_p2.y - m_p3.y) * (m_p2.y - m_p3.y));

  c = sqrt((m_p3.x - m_p4.x) * (m_p3.x - m_p4.x) + (m_p3.y - m_p4.y) * (m_p3.y - m_p4.y));

  d = sqrt((m_p4.x - m_p1.x) * (m_p4.x - m_p1.x) + (m_p4.y - m_p1.y) * (m_p4.y - m_p1.y));

  return a + b + c + d;

}

double Quadrilateral::area() {

  double a, b, c, d, p1, p2;

  a = sqrt((m_p1.x - m_p2.x) * (m_p1.x - m_p2.x) + (m_p1.y - m_p2.y) * (m_p1.y - m_p2.y));

  b = sqrt((m_p2.x - m_p3.x) * (m_p2.x - m_p3.x) + (m_p2.y - m_p3.y) * (m_p2.y - m_p3.y));

  c = sqrt((m_p3.x - m_p4.x) * (m_p3.x - m_p4.x) + (m_p3.y - m_p4.y) * (m_p3.y - m_p4.y));

  d = sqrt((m_p4.x - m_p1.x) * (m_p4.x - m_p1.x) + (m_p4.y - m_p1.y) * (m_p4.y - m_p1.y));

  p1 = (a + b + c) / 2;

  p2 = (c + d + a) / 2;

  return sqrt(p1 * (p1 - a) * (p1 - b) * (p1 - c)) + sqrt(p2 * (p2 - c) * (p2 - d) * (p2 - a)); //海龙公式

}

bool Quadrilateral::isRectangle() {

  double a, b, c, d;

  a = sqrt((m_p1.x - m_p2.x) * (m_p1.x - m_p2.x) + (m_p1.y - m_p2.y) * (m_p1.y - m_p2.y));

  b = sqrt((m_p2.x - m_p3.x) * (m_p2.x - m_p3.x) + (m_p2.y - m_p3.y) * (m_p2.y - m_p3.y));

  c = sqrt((m_p3.x - m_p4.x) * (m_p3.x - m_p4.x) + (m_p3.y - m_p4.y) * (m_p3.y - m_p4.y));

  d = sqrt((m_p4.x - m_p1.x) * (m_p4.x - m_p1.x) + (m_p4.y - m_p1.y) * (m_p4.y - m_p1.y));

  if (a == c && b == d && a != b) return true; //对角线相等但不相交的条件

  else if (a == b && c == d && a != c) return true;

  else if (a == d && b == c && a != b) return true;

  else return false;

}

以上就是C++实现平面四边形类的定义的过程,通过定义四个点的结构体以及四个点的坐标信息,可以通过类的方法进行四边形的周长、面积、形态等计算。C++语言既灵活又强大,在实现各种类的定义上都拥有很大的优势。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复