判断4个平面坐标点能不能围成一个矩形

本文介绍了一个使用PHP编写的函数,该函数用于判断由四个坐标点定义的图形是否为正方形。通过计算各边长及对角线长度,并检查它们是否相等来实现判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php 

function iszf($p){  
    $t1 = array_shift($p);  
    foreach ($p as $key => $v) {  
        if($t1['0'] == $v['0']){  
            $h1[] = abs($t1['1']-$v['1']);  
        }elseif ($t1['1'] == $v['1']) {  
            $h1[] = abs($t1['0']-$v['0']);  
        }else{  
            $h1['duijue'] = sqrt(pow(abs($t1['0']-$v['0']),2)+pow(abs($t1['1']-$v['1']),2));  
        }  
    }  


    $t2 = array_shift($p);  
    foreach ($p as $key => $v) {  
        if($t2['0'] == $v['0']){  
            $h2[] = abs($t2['1']-$v['1']);  
        }elseif ($t2['1'] == $v['1']) {  
            $h2[] = abs($t2['0']-$v['0']);  
        }else{  
            $h2['duijue'] = sqrt(pow(abs($t2['0']-$v['0']),2)+pow(abs($t2['1']-$v['1']),2));  
        }  
    }  


    $t3 = array_shift($p); 
    foreach ($p as $key => $v) {  
        if($t3['0'] == $v['0']){  
            $h3[] = abs($t3['1']-$v['1']);  
        }elseif ($t3['1'] == $v['1']) {  
            $h3[] = abs($t3['0']-$v['0']);  
        }else{  
            $h3['duijue'] = sqrt(pow(abs($t3['0']-$v['0']),2)+pow(abs($t3['1']-$v['1']),2));  
        }  
    }  


    $dd = false;  
    if(array_key_exists('duijue',$h2)){  
        if($h2['duijue'] == $h1['duijue']){  
            if($h1['1'] ?? ''){
                if( $h1['0']== $h1['1'] ){
                    $dd = true;  
                }
            }
        }  
    }  
      
    if(array_key_exists('duijue',$h3)){  
        if($h3['duijue'] == $h1['duijue']){  
            if($h1['1'] ?? ''){
                if( $h1['0']== $h1['1'] ){
                    $dd = true;  
                }
            }
        }  
    }  
    return $dd;  
}  
  
$p[] = [0,0];  
$p[] = [6,6];
$p[] = [0,6];
$p[] = [6,0];
  

var_dump(iszf($p)); 

 

转载于:https://www.cnblogs.com/handongyu/p/8986031.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值