zoukankan      html  css  js  c++  java
  • C#判断两个矩形(大小可以不一样,也可以一样)是否重叠

    在开发用winform开发组态软件的时候遇到了很多问题,其中之一就是拖动设备,不让两个设备重叠相交

    矩形重叠,可以理解为碰撞,就是不让两个矩形相交,想了很多种办法,最后终于弄出来了

    图5是固定不动的 图1、2、3、4、6、7、8、9是可能和图5相交的几种情况

    图片最左上点X、Y坐标、 宽度、高度已知 这样就能计算了

    double RecAleftX  拖动矩形的左上X点
    double RecAleftY 拖动矩形的左上Y点
    double RecArightX 拖动矩形的右下X点
    double RecArightY 拖动矩形的右下Y点
    double RecBleftX 固定不定的矩形的左上X点
    double RecBleftY
    固定不定的矩形的左上Y点
    double RecBrightX 固定不定的矩形的右下X点
    double RecBrightY 固定不定的矩形的右下Y点
    //判断两个矩形(大小可以不一样) 是否重叠算法
            public bool JudgeRectangleIntersect(double RecAleftX, double RecAleftY, double RecArightX, double RecArightY,
            double RecBleftX, double RecBleftY, double RecBrightX, double RecBrightY)
            {
                bool isIntersect = false;
                try
                {
                    double zx = getAbsluteValue(RecAleftX + RecArightX - RecBleftX - RecBrightX);
                    double x = getAbsluteValue(RecAleftX - RecArightX) + getAbsluteValue(RecBleftX - RecBrightX);
                    double zy = getAbsluteValue(RecAleftY + RecArightY - RecBleftY - RecBrightY);
                    double y = getAbsluteValue(RecAleftY - RecArightY) + getAbsluteValue(RecBleftY - RecBrightY);
    
                    if (zx <= x && zy <= y)  //需要确认两矩形边线重合是否定义为相交 此处定义为相交。
                    {
                        isIntersect = true;
                    }
                }
                catch (Exception ex)
                {
                    string str = ex.Message;
                }
                return isIntersect;
            }
    
            private double getAbsluteValue(double douValue)
            {
                if (douValue >= 0)
                {
                    return douValue;
                }
                else
                {
                    return douValue * -1;
                }
            }
  • 相关阅读:
    Java实现 洛谷 P1009 阶乘之和
    Java实现 洛谷 P1009 阶乘之和
    mysql8.0 安装 修改密码 允许远程连接
    Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/vm10-0-0-19
    优秀c++开源项目集合
    可能是国内最火的开源项目 —— C/C++ 篇
    CodeBlocks环境搭建及创建第一个C++程序
    手动安装MySQL8.0
    【Linux】CentOS 7.4 安装 MySQL 8.0.12 解压版
    CentOS7下安装mysql5.7
  • 原文地址:https://www.cnblogs.com/ZK1115655608/p/12765557.html
Copyright © 2011-2022 走看看