判断正方形

算法渣渣表示采用暴力判断,没有封装,看起来很丑。。。
简单的用沟谷定理判断直角,用两边相等判断非长方形。

不过这里不需要开根号,因为开根号导致精度问题后面反而会出错。

 
function cube(arr){ var len = arr.length; if(len != 4){ return false; } var commonLen; //判断后面一次过程的共同边长是否和前一次相同 var len1 = Math.pow((arr[0][0]-arr[1][0]),2) + Math.pow((arr[0][1]-arr[1][1]),2); var len2 = Math.pow((arr[1][0]-arr[2][0]),2) + Math.pow((arr[1][1]-arr[2][1]),2); var len3 = Math.pow((arr[0][0]-arr[2][0]),2) + Math.pow((arr[0][1]-arr[2][1]),2);         
        //随便取三个点判断是否有边长相等并且角为直角 if(len1 != len2 && len1 != len3 && len2 != len3){ return false; }else{ if(len1 == len2 && len1 != len3){ if(len1 +len2 != len3){ return false; }else{ commonLen = len1; } } else if(len1 == len3 && len1 != len2){ if(len1 + len3 != len2){ return false; }else{ commonLen = len1; } } else if(len3 == len2 && len3 != len1){ if(len3 + len2 != len1){ return false; }else{ commonLen = len3; } } else{ return false; } } var len4 = Math.pow((arr[1][0]-arr[2][0]),2) + Math.pow((arr[1][1]-arr[2][1]),2); var len5 = Math.pow((arr[1][0]-arr[3][0]),2) + Math.pow((arr[1][1]-arr[3][1]),2); var len6 = Math.pow((arr[3][0]-arr[2][0]),2) + Math.pow((arr[3][1]-arr[2][1]),2); if(len4 != len5 && len4 != len6 && len5 != len6){ return false; }else{ if(len4 == len5 && len4 != len6){ if(len4 + len5 != len6){ return false; }else if(len4 != commonLen){ return false; } } else if(len4 == len6 && len4 != len5){ if(len4 + len6 != len5){ return false; }else if(len4 != commonLen){ return false; } } else if(len5 == len6 && len5 != len4){ if(len5 + len6 != len4){ return false; }else if(len5 != commonLen){ return false; } } else{ return false; } } return true; } console.log(cube([[1,3],[2,1],[4,2],[3,4]]));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值