判断四个点是否构成矩形

判断四个点是否构成矩形


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;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值