gpt4 book ai didi

c++ - 读取 4 个点的坐标。他们做一个正方形吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:54 27 4
gpt4 key购买 nike

我计算点之间的距离,如果距离相等,则该点构成正方形,否则不构成正方形。仅当我按以下顺序 A(x, y)、B(x, y)、C(x, y)、D(x, y) 或相反顺序读取坐标时,我的代码才有效。但是如果我这样读,例如 A(x, y), B(x, y), D(x, y), C(x, y) 它就不会工作,因为 dist 方法会计算正方形的对角线长度.我该如何解决这个问题?

#include <iostream>
using namespace std;

struct {
int x;
int y;
}a[10];

int dist(int x1, int y1, int x2, int y2)
{
int c1, c2;
c1 = x2-x1;
c2 = y2-y1;
return (c1*c1)+(c2*c2);
}

int main()
{
int d1, d2, d3, d4;
for (int i=1; i<=4; i++)
{
cout << 'X' << i << '='; cin >> a[i].x;
cout << 'Y' << i << '='; cin >> a[i].y;
}
d1 = dist(a[1].x, a[1].y, a[2].x, a[2].y);
d2 = dist(a[2].x, a[2].y, a[3].x, a[3].y);
d3 = dist(a[3].x, a[3].y, a[4].x, a[4].y);
d4 = dist(a[4].x, a[4].y, a[1].x, a[1].y);
if(d1==d2 && d1==d3 && d1==d4)
cout << "Is a square";
else
cout << "Is not a square";
return 0;
}

最佳答案

检查距离是不够的,您至少需要检查一个角度,因为形状可能是菱形。

仅检查角度也是不够的,因为您最终可能会得到一个矩形。

点与点之间总共有6个距离。计算所有这些。在这 6 个中,有四个应该相等(称它们的长度为 x)。 - 这保证了菱形

另外两个应该相等(称它们的长度为y)。 这保证了一个矩形

将一个菱形和一个矩形放在一起,BAM! - 正方形。

关于c++ - 读取 4 个点的坐标。他们做一个正方形吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786089/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com