判断四个点是否构成矩形

判断四个点是否构成矩形


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;
}

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片