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

     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 }
  • 相关阅读:
    [AGC019F] Yes or No
    [CF1063F]String Journey
    [Gym100490A] Approximation
    [ARC058C]Iroha and Haiku
    [互测题目]大括号树
    [UVA10859]放置街灯 Placing Lampposts
    PAT甲级1141PAT Ranking of Institutions
    PAT甲级1153Decode Registration Card of PAT
    使用Python语言通过PyQt5和socket实现UDP服务器
    数据结构-哈希
  • 原文地址:https://www.cnblogs.com/hbf369/p/2281554.html
Copyright © 2011-2022 走看看