CakeFest 2024: The Official CakePHP Conference

hypot

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

hypot Рассчитывает длину гипотенузы прямоугольного треугольника

Описание

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

Функция hypot() возвращает длину гипотенузы прямоугольного треугольника с длинами сторон x и y или расстояние точки (x, y) до начала координат Эквивалентно вызову sqrt($x * $x + $y * $y).

Список параметров

x

Длина первой стороны.

y

Длина второй стороны.

Возвращаемые значения

Возвращает вычисленную длину гипотенузы.

add a note

User Contributed Notes 2 notes

up
-10
Hayley Watson
6 years ago
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);
}

?>
up
-20
robinv at ecosse dot net
20 years ago
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.

?>
To Top