• 判断两矩形是否相交


     1 //判断矩形是否相交
    2 bool FMath::IsRectIntersect(const FRect& rect1, const FRect& rect2)
    3 {
    4 bool bResult = true;
    5
    6 double dWidthRectA;
    7 double dHeightRectA;
    8
    9 double dWidthRectB;
    10 double dHeightRectB;
    11
    12 //方便计算,中心点坐标为实际坐标的2倍
    13 CPoint centerRectA;
    14 CPoint centerRectB;
    15
    16 //bottom的y坐标比top的大
    17 dWidthRectA = rect1.GetBottomRight().GetX() - rect1.GetTopLeft().GetX();
    18 dHeightRectA = rect1.GetBottomRight().GetY() - rect1.GetTopLeft().GetY();
    19
    20 dWidthRectB = fabs(rect2.GetBottomRight().GetX() - rect2.GetTopLeft().GetX());
    21 dHeightRectB = fabs(rect2.GetBottomRight().GetY() - rect2.GetTopLeft().GetY()) ;
    22
    23 centerRectA.x = GetDoubleInt(rect1.GetTopLeft().GetX()/2 + rect1.GetBottomRight().GetX()/2);
    24 centerRectA.y = GetDoubleInt(rect1.GetTopLeft().GetY()/2 + rect1.GetBottomRight().GetY()/2);
    25
    26 centerRectB.x = GetDoubleInt(rect2.GetTopLeft().GetX()/2 + rect2.GetBottomRight().GetX()/2);
    27 centerRectB.y = GetDoubleInt(rect2.GetTopLeft().GetY()/2 + rect2.GetBottomRight().GetY()/2);
    28
    29
    30 //判断两个矩形的中心坐标的水平和垂直距离
    31 if ( (fabs(double(centerRectA.x - centerRectB.x)) <= (dWidthRectA + dWidthRectB))
    32 && (fabs(double(centerRectA.y - centerRectB.y)) <= (dHeightRectA + dHeightRectB)) )
    33 {
    34 bResult = true;
    35 }
    36 else
    37 {
    38 bResult = false;
    39 }
    40
    41 return bResult;
    42
    43 }
    复制代码
     
    分类: 算法
    标签: C++
  • 相关阅读:
    bzoj1415 NOI2005聪聪和可可
    Tyvj1952 Easy
    poj2096 Collecting Bugs
    COGS 1489玩纸牌
    COGS1487 麻球繁衍
    cf 261B.Maxim and Restaurant
    cf 223B.Two Strings
    cf 609E.Minimum spanning tree for each edge
    cf 187B.AlgoRace
    cf 760B.Frodo and pillows
  • 原文地址:https://www.cnblogs.com/mfryf/p/2554847.html
Copyright © 2020-2023  润新知