• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • hypot()

    (PHP 4 >= 4.1.0, PHP 5, PHP 7)

    计算一直角三角形的斜边长度

    说明

    hypot(float $x,float $y):float

    hypot()函数将会跟据直角三角形的两直解边长度$x$y计算其斜边的长度。或者是从标点($x,$y)到原点的距离。该函数的算法等同于sqrt(x*x + y*y)

    参数

    $x

    第一条边的长度

    $y

    第二条边的长度

    返回值

    计算斜边的长度

    If you need a higher-dimensional diagonal length (norm), you can exploit the fact that sqrt(x*x+y*y+z*z) == sqrt(x*x+sqrt(y*y+z*z)). In other words hypot(x, y, z)==hypot(x, hypot(y, z)).
    To be generic about it....
    <?php
    function norm(...$args)
    {
      return array_reduce($args, 'hypot', 0);
    }
    ?>
    
    A simpler approach would be to allow an arbitrary number of parameters. That would allow for whatever number of dimensions you want *and* it would be backwards compatible with the current implementation.
    <?php
    function hypo() 
    {
      $sum = 0;
      foreach (func_get_args() as $dimension) {
        if (!is_numeric($dimension)) return -1;
        $sum += pow($dimension, 2);
      }
      return sqrt($sum);
    }
    print hypo();     // vector in 0 dimensions, magnitude = 0.
    print hypo(1);     // vector in 1 dimension, magnitude = 1.
    print hypo(3, 4);    // vector in 2 dimensions, magnitude = 5.
    print hypo(2, 3, 6);   // vector in 3 dimensions, magnitude = 7.
    ?>
    

    上篇:hexdec()

    下篇:intdiv()