hypot
(PHP 4 >= 4.1.0, PHP 5)
hypot — Рассчитывает длину гипотенузы прямоугольного треугольника
Описание
float hypot
( float
$x
, float $y
)
hypot() возвращает длину гипотенузы
прямоугольного треугольника с длинами сторон x
и
y
, или расстояние точки
(x
, y
) до начала координат
Эквивалентно sqrt(x*x + y*y).
Список параметров
-
x
-
Длина первой стороны
-
y
-
Длина второй стороны
Возвращаемые значения
Вычисленная длина гипотенузы
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Математические расширения
- Математические функции
- abs
- acos
- acosh
- asin
- asinh
- atan2
- atan
- atanh
- base_convert
- bindec
- ceil
- cos
- cosh
- decbin
- dechex
- decoct
- deg2rad
- exp
- expm1
- floor
- fmod
- getrandmax
- hexdec
- hypot
- intdiv
- is_finite
- is_infinite
- is_nan
- lcg_value
- log10
- log1p
- log
- max
- min
- mt_getrandmax
- mt_rand
- mt_srand
- octdec
- pi
- pow
- rad2deg
- rand
- round
- sin
- sinh
- sqrt
- srand
- tan
- tanh
Коментарии
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.
?>
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);
}
?>