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. ?>