[英]checking whether 4 points in a plane define a square?
如何检查平面中的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");
计算每对点之间的所有6个平方距离。 即:
(x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)
排序他们。
其中最小的四个应该(大约)相等,两个大的应该是(大约)两倍大。
你需要衡量“广场的方形”吗?
这取决于你是否可以对点的排序做出任何假设。 如果没有,那么将有两个操作:
首先按X,Y对点进行排序
测试相等的宽度/高度(注意,当你使用浮点数作为坐标时,你可能需要在比较相等时定义一个小的公差值)
如果已知点的特定顺序,则可以省略步骤1。
(请注意,这个答案假定您正在测试与X / Y轴方向相同的正方形 - 如果正方形可以旋转任意角度,那么它会变得更复杂一些。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.