[php面试题]PHP 在坐标系上给定四个坐标点,判断它们能不能组成一个矩形,是正方形还是长方形

这篇博客探讨了如何使用PHP解决一个面试题:在坐标系中,通过四个给定的坐标点判断它们能否形成一个矩形,包括区分正方形和长方形。方法是计算各边长并应用勾股定理来验证直角。
摘要由CSDN通过智能技术生成

思路:

就是坐标系上找4个点,然后判断这些点和点之间能组合出多少长度的线,然后根据勾股定理看看是否能组成直角

 

// 判断坐标系上的任意4个点是否可以组成一个矩形

// 1,2个点一组,穷举所有组合方式
// 2,计算每个组合方式2点之间的距离
// 3,对产生的所有距离长度去重,计算数量,数量为3是长方形(假设),数量是2是正方形(假设)
// 4,判断剩余的距离能否组成一个直角,利用勾股定理判断,如果不能组成直角三角形,可能是菱形、梯形、不规则四边形

 

error_reporting(0);
// 判断坐标系上的任意4个点是否可以组成一个矩形

// 1,2个点一组,穷举所有组合方式
// 2,计算每个组合方式2点之间的距离
// 3,对产生的所有距离长度去重,计算数量,数量为3是长方形(假设),数量是2是正方形(假设)
// 4,判断剩余的距离能否组成一个直角,利用勾股定理判断,如果不能组成直角三角形,可能是菱形、梯形、不规则四边形


// 是否是矩形
function IsRectangle($point_1 = [0, 0], $point_2 = [0, 0], $point_3 = [0, 0], $point_4 = [0, 0])
{
    $point_list = [$point_1, $point_2, $point_3, $point_4];

    // 判断是否有重复的点
    if (count(array_unique($point_list, SORT_REGULAR)) < 4) {
        echo 2;
        return false;
    }
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值