c++二个矩形的位置关系,新手写(无难点)

来源:互联网 发布:公文写作神器软件 编辑:程序博客网 时间:2024/06/11 10:43
#include<iostream>#include <cmath>#include <cstdlib>using namespace std;int main() {    double x = 0, y = 0, w = 0, h = 0, x1 = 0, x2 = 0, x3 = 0, x4 = 0, y1 = 0, y2 = 0, y3 = 0, y4 = 0;    double a = 0, b = 0, c = 0, d = 0, a1 = 0, a2 = 0, a3 = 0, a4 = 0, b1 = 0, b2 = 0, b3 = 0, b4 = 0;    cout << "Enter r1's center x-,y-coordinates,width,height: ";    cin >> x >> y >> w >> h;    cout << "Enter r2's center x,y-coordinates,width,height: ";    cin>> a >> b >> c >> d;    x1 = x - w / 2;    x2 = x + w / 2;    y1 = y + h / 2;    y2 = y + h / 2;    x3 = x1;    x4 = x2;    y3 = y - h / 2;    y4 = y3;    a1 = a - c / 2;    a2 = a + c / 2;    b1 = b + d / 2;    b2 = b + d / 2;    a3 = a1;    a4 = a2;    b3 = b - d / 2;    b4 = b3;    //以上是分别定义二个个矩形四个顶点的坐标根据输入的中心点坐标    if ((abs(a1 - x) <= w / 2 && abs(b1 - y) <= h / 2) &&        (abs(a2 - x) <= w / 2 && abs(b2 - y) <= h / 2) &&        (abs(a3 - x) <= w / 2 && abs(b3 - y) <= h / 2) &&        (abs(a4 - x) <= w / 2 && abs(b4 - y) <= h / 2))    {        cout << "r2 is inside r1"; //(r2的四个顶点在r1中)    }            else    {        if (abs(a1 - x) <= w / 2 && abs(b1 - y) <= h / 2) {            cout << "在长方形内1";  //(r2的x1,y1在r1中)        }        else if (abs(a2 - x) <= w / 2 && abs(b2 - y) <= h / 2) {            cout << "在长方形内2"; //(r2的x2,y2在r1中)        }        else if (abs(a3 - x) <= w / 2 && abs(b3 - y) <= h / 2) {            cout << "在长方形内3";//(r2的x3,y3在r1中)        }        else if (abs(a4 - x) <= w / 2 && abs(b4 - y) <= h / 2) {            cout << "在长方形内4";//(r2的x4,y4在r1中)        }        else  if (abs(a1 - x)<abs(x1-x))        {            cout << "r2的四个顶点不在长方形内,有重合区域";        }        else if (abs(b1 - y)<abs(y1 - y))        {            cout << "r2的四个顶点不在长方形内,有重合区域";        }        else        {            cout << "r2的四个顶点不在长方形内,没有重合区域";        }            }    system("pause");    return 0;}

说明(x3,y3)在左下角

(x4,y4)在右下角

阅读全文
0 0
原创粉丝点击