PHP判断4点是否组成矩形

这是自己写的,简单测试是可用的,不知道有没有什么其他情况没有考虑到,有问题欢迎提出

$arr = [[0,0], [1,0], [0,1], [0,1]];

function test(array $arr) {
    
    $len01 = sqrt(
                abs(pow(($arr[0][0] - $arr[1][0]), 2)) + 
                abs(pow(($arr[0][1] - $arr[1][1]), 2))
            );
    
    $len02 = sqrt(
                abs(pow(($arr[0][0] - $arr[2][0]), 2)) + 
                abs(pow(($arr[0][1] - $arr[2][1]), 2))
            );
    
    $len03 = sqrt(
                abs(pow(($arr[0][0] - $arr[3][0]), 2)) + 
                abs(pow(($arr[0][1] - $arr[3][1]), 2))
            );
    
    $len = [0, $len01, $len02, $len03];
     //求最长距离
    $max_len = max($len);
    
    //求剩余两点距离
    $key = array_search($max_len, $len);
    unset($arr[$key]);
    unset($arr[0]);
    
    $a = current($arr);
    $b = end($arr);
    $last_len =  sqrt(
                abs(pow(($a[0] - $b[0]), 2)) + 
                abs(pow(($a[1] - $b[1]), 2))
            );
    
    if($last_len != $max_len) return false;
        else return true;
    
}

var_dump(test($arr));

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,941评论 0 5
  • 今日体验:最近店里不怎么忙,就把自己负责的卫生区打扫打扫。不打扫还不知道原来看似很好的地方其实有好多垃圾。 核心:...
    其实_1d17阅读 166评论 0 0
  • 前任三,再见前任,一部电影又把怀旧拿出来来回说事,有时候,很迷惑不解,为什么怀旧成了这个巨变时代的常态? 好像是从...
    一枚乱画阅读 99评论 0 0
  • 记不清是为什么,一睁眼时我已经在病床上插着管子奄奄一息。冰冷的白色刺在我的心上。 已经五个月了,五个月没有动了。从...
    歪曲_阅读 221评论 1 1
  • 常佳欣 姐妹双双来吾家,同母异性可共笼。 窗前相对移相动,滴答无声惬意息。 其情躺尾皆...
    常佳欣阅读 318评论 0 0