如何检查平面中的4个点是否定义了正方形?给出一个点和一个正方形区域的值的函数是什么作为输入参数返回四个平方(定义一个相应的类型),其边平行于x轴和y轴
这是我如何开始的:
#include <stdio.h>
#include<math.h>
struct point{
float x;
float y;
}
typedef struct point POINT;
struct square{
struct point p1;
struct point p2;
struct point p3;
struct point p4;
}
typedef struct square SQUARE;
int main()
{
int point;
printf("point coordinate");
printf("\n\n");
printf("enter data\n");
答案 0 :(得分:4)
计算每对点之间的所有6个平方距离。即:
(x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)
对它们进行排序。
其中最小的四个应该(大约)相等,两个大的应该是(大约)两倍大。
你需要衡量“方形是多方形”吗?
答案 1 :(得分:1)
答案 2 :(得分:0)
这取决于您是否可以对点的排序做出任何假设。如果没有,那么将有两个操作:
首先按X,Y
测试相等的宽度/高度(请注意,当你使用浮点数作为坐标时,你可能需要在比较相等时定义一个小的公差值)
如果已知点的特定顺序,则可省略步骤1.
(请注意,这个答案假定您正在测试与X / Y轴方向相同的正方形 - 如果正方形可以旋转任意角度,那么它会变得更复杂。)< / p>