⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myrectangle.cpp

📁 判断坐标系中矩形是否相交以及相交面积的算法
💻 CPP
字号:

#include <iostream>
#include <algorithm>
using namespace std;

float x[5],y[5];

struct point
{
	float x,y;
}p[17];

bool cmp(point m,point n)
{
	if (m.x==n.x) return m.y<n.y;
	else return m.x<n.x;
}

float min(float x,float y)
{
	return x>y?y:x;
}

float max(float x,float y)
{
	return x>y?x:y;
}

int main()
{
	float covery;
	cout<<"请输入第一个矩形左上角坐标,以空格隔开"<<endl;
	cin>>x[1]>>y[1];
	cout<<"请输入第一个矩形右下角坐标,以空格隔开"<<endl;
	cin>>x[2]>>y[2];
	cout<<"请输入第二个矩形左上角坐标,以空格隔开"<<endl;
	cin>>x[3]>>y[3];
	cout<<"请输入第二个矩形右下角坐标,以空格隔开"<<endl;
	cin>>x[4]>>y[4];
	if (min(x[1],x[2])>max(x[3],x[4])||min(x[3],x[4])>max(x[1],x[2])||min(y[1],y[2])>max(y[3],y[4])||min(y[3],y[4])>max(y[1],y[2]))
	{
		cout<<"两矩形不相交"<<endl;return 1;
	}

	for (int i=1;i<=4;i++)
	{
		for (int j=1;j<=4;j++)
		{
			p[(i-1)*4+j-1].x=x[i];
			p[(i-1)*4+j-1].y=y[j];
		}
	}
	sort(p,p+16,cmp);
	covery=(p[5].y-p[6].y)*(p[5].x-p[9].x);
	if (covery==0) cout<<"两矩形交于一点"<<endl;
	else
		cout<<"两矩形相交部分面积为"<<covery<<endl;
	return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -