21xrx.com
2024-12-22 21:21:22 Sunday
登录
文章检索 我的文章 写文章
C++ 如何判断两个矩形的 8 个坐标是否相交?
2023-07-04 22:16:21 深夜i     --     --
C++ 判断 矩形 8个坐标 相交

在 C++ 中,可以通过比较两个矩形的顶点坐标来判断它们是否相交。对于一个矩形来说,可以通过指定左上角和右下角的两个点来确定其四个顶点。因此,如果两个矩形的顶点坐标有重叠部分,则它们就是相交的。

具体来说,在 C++ 中可以定义一个结构体来表示一个矩形,其中包含左上角和右下角的坐标。例如:


struct Rectangle y2; // 右下角坐标

;

然后,可以编写一个函数来判断两个矩形是否相交。该函数需要将每个矩形的四个顶点坐标取出来,并将它们与另一个矩形的四个顶点坐标进行比较。如果任意一个顶点坐标在另一个矩形内,则说明两个矩形相交。

下面是一个示例函数的代码:


bool intersect(Rectangle r1, Rectangle r2) {

  // 取出 r1 的四个顶点坐标

  int x1 = r1.x1, y1 = r1.y1;

  int x2 = r1.x2, y2 = r1.y1;

  int x3 = r1.x1, y3 = r1.y2;

  int x4 = r1.x2, y4 = r1.y2;

  // 检查每个顶点是否在 r2 内

  if (x1 >= r2.x1 && x1 <= r2.x2 && y1 >= r2.y1 && y1 <= r2.y2) return true;

  if (x2 >= r2.x1 && x2 <= r2.x2 && y2 >= r2.y1 && y2 <= r2.y2) return true;

  if (x3 >= r2.x1 && x3 <= r2.x2 && y3 >= r2.y1 && y3 <= r2.y2) return true;

  if (x4 >= r2.x1 && x4 <= r2.x2 && y4 >= r2.y1 && y4 <= r2.y2) return true;

  // 如果没有任何顶点在 r2 内,则两个矩形不相交

  return false;

}

使用该函数判断两个矩形是否相交的示例代码如下:


int main() {

  Rectangle r1 = 5;

  Rectangle r2 = 6;

  if (intersect(r1, r2)) {

    std::cout << "r1 and r2 intersect\n";

  } else {

    std::cout << "r1 and r2 do not intersect\n";

  }

  return 0;

}

在上述示例中,r1 和 r2 分别是两个矩形的结构体,它们分别表示左上角坐标为 (0, 0)、右下角坐标为 (5, 5) 和左上角坐标为 (4, 4)、右下角坐标为 (6, 6) 的矩形。程序输出的结果是 "r1 and r2 intersect",说明两个矩形相交。

  
  

评论区

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