欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

判断四个点是否构成矩形

程序员文章站 2022-03-02 10:54:24
...

判断四个点是否构成矩形


find if 4 points on a plane form a rectangle?

  1. 找出角点的质心:cx =(x1 + x2 + x3 + x4)/ 4,cy =(y1 + y2 + y3 + y4)/ 4
  2. 测试从质心到所有四个角的距离的平方是否相等
//判断4个点是否构成矩形(OBB)
//找出角点的质心:cx =(x1 + x2 + x3 + x4)/ 4,cy =(y1 + y2 + y3 + y4)/ 4
//测试从质心到所有四个角的距离的平方是否相等
bool isRectangle(double x1, double y1,
                 double x2, double y2,
                 double x3, double y3,
                 double x4, double y4)
{
  double cx=(x1+x2+x3+x4)/4;
  double cy=(y1+y2+y3+y4)/4;

  double dd1= Math.sqrt(cx-x1)+ Math.sqrt(cy-y1);
  double dd2= Math.sqrt(cx-x2)+ Math.sqrt(cy-y2);
  double dd3= Math.sqrt(cx-x3)+ Math.sqrt(cy-y3);
  double dd4= Math.sqrt(cx-x4)+ Math.sqrt(cy-y4);
  return Math.abs(dd1 - dd2) < 1E-6 &&
         Math.abs(dd1 - dd3) < 1E-6 && 
         Math.abs(dd1 - dd4) < 1E-6;
}
相关标签: C++ 几何算法