zoukankan      html  css  js  c++  java
  • 判断两矩形是否相交

    近期一次笔试中考到了这个题目,答题之后回来再看,发现网上的解答有些十分复杂,让人懒得去看。

    隐约记得之前学习计算机图像学的课程时有这个算法。

    我把自己的思路记下来,如有遗漏情况没有考虑或者方法有问题,欢迎拍砖:P

    问题定义:给定两个边与坐标轴平行的矩形,分别由左上角与右下角两点指定,即矩形(P1,P2)与(P3,P4),判断两矩形是否相交。

    我的思路:如下图所示,首先求出P1与P3点在X方向较大值与Y方向较大值的交点,在下图中就是P3,用红点(记为M点)表示。

    然后求出P2与P4点在X方向较小值与Y方向较小值的交点,在下图中就是P2,用橙色点(记为N点)表示。

    如果M点的X坐标和Y坐标值均比N点相应的X坐标和Y坐标值小,亦即M和N可以分别构成一个矩形的左上角点和右上角点,则两矩形相交;其余情况则不相交。

                                       图1

    下图给出第二个示例,表明相交则矩形的某一个顶点位于另一矩形内部作为判断依据是错误的。

                                图2

    图3给出了相互包含的情况:

                                图3

    下图给出了不相交时的示例,两矩形为上下关系,可见红点不在橙色点左上角,不能构成矩形,因此不相交。

                              图4

    下面的例子同上,给出了两矩形为左右关系的情况。

                     图5

  • 相关阅读:
    P2764 最小路径覆盖问题
    P2598 [ZJOI2009]狼和羊的故事
    P2472 [SCOI2007]蜥蜴
    P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查
    P2050 [NOI2012]美食节
    P1345 [USACO5.4]奶牛的电信Telecowmunication
    P1251 餐巾计划问题
    hihocoder 1584 Bounce
    [CF132C] Logo Turtle
    CF1110D Jongmah
  • 原文地址:https://www.cnblogs.com/avril/p/2993875.html
Copyright © 2011-2022 走看看