已知矩形三个顶点坐标,计算第四个点的坐标 C++实现

计算方法:
①先用向量法找到互相垂直的两条边(互相垂直的两个向量点积为0)
②再用对角线上对称的两点横坐标之和与纵坐标之和是中点的二倍性质,可以求出第四点的横纵坐标

#include
using namespace std;
const int N = 2010;
typedef pair<int,int> PII;	//pair存放x、y坐标

PII cal(PII a,PII b,PII c)
{
     
	PII d;
	if((a.first-b.first)*(a.first-c.first)+(a.second-b.second)*(a.second-c.second) == 0)	//向量法找互相垂直的两条边,a点为顶点时
	{
     
		d.first = b.first + c.first - a.first;	//性质2
		d.second = b.second + c.second - a.second;
		return d;
	}
	if((b.first-a.first)*(b.first-c.first)+(b.second-a.second)*(b.second-c.second) == 0)	//b点为顶点时
	{
     
		d.first = a.first + c.first - b.first;
		d.second = a.second + c.second - b.second;
		return d;
	}
	if((c.first-a.first)*(c.first-b.first)+(c.second-a.second)*(c.second-b.second) == 0)	//c点为顶点时
	{
     
		d.first = a.first + b.first - c.first;
		d.second = a.second + b.second - c.second;
		return d;
	}
}

int main()
{
     
	PII a,b,c,d;
	cin >> a.first >> a.second >> b.first >> b.second >> c.first >> c.second;
	d = cal(a,b,c);
	cout << d.firdt << " " << d.second << endl;

	return 0;
}

你可能感兴趣的:(数论,计算几何,数论,计算,图形)