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 }
    复制代码
     
    分类: 算法
    标签: C++
  • 相关阅读:
    Session原理、安全以及最基本的Express和Redis实现
    Docker内核能力机制
    Docker服务端防护
    Docker控制组
    Docker 内核名字空间
    Docker标准化开发测试和生产环境
    Docker多台物理主机之间的容器互联
    Docker创建 tomcat/weblogic 集群
    Docker使用 Supervisor 来管理进程
    Docker实例:创建一个点到点连接
  • 原文地址:https://www.cnblogs.com/mfryf/p/2554847.html
Copyright © 2011-2022 走看看