Acos: примеры (PHP)

Использование функции acos для вычисления арккосинуса в PHP
Раздел: Математические функции
acos(float $num): float

Основные сведения о функции acos

Функция acos() в PHP вычисляет арккосинус (обратный косинус) числа. Она возвращает угол в радианах, косинус которого равен переданному аргументу. Эта функция используется в математических расчетах, компьютерной графике, обработке сигналов и решении геометрических задач.

Аргументы функции

Функция принимает один обязательный параметр:

  • $num (float) - число, для которого вычисляется арккосинус. Допустимый диапазон значений: от -1 до 1 включительно.

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

Функция возвращает:

  • Угол в радианах (тип float) в диапазоне от 0 до π (пи).
  • NAN (не число), если аргумент выходит за пределы диапазона [-1, 1].

Простые примеры использования

Базовый расчет арккосинуса

<?php
$result = acos(0.5);
echo $result;
?>
1.0471975511966

Граничные значения

<?php
echo acos(1) . "\n";
echo acos(0) . "\n";
echo acos(-1) . "\n";
?>
0
1.5707963267949
3.1415926535898

Недопустимый аргумент

<?php
$result = acos(2);
var_dump($result);
?>
float(NAN)

Похожие функции в PHP

  • asin() - вычисляет арксинус. Возвращает угол в радианах, синус которого равен аргументу.
  • atan() - вычисляет арктангенс. Возвращает угол в радианах, тангенс которого равен аргументу.
  • atan2() - вычисляет арктангенс от двух переменных. Учитывает знаки обоих аргументов для определения квадранта.
  • cos() - вычисляет косинус угла. Является прямой тригонометрической функцией.
  • rad2deg() - преобразует радианы в градусы. Часто используется вместе с acos() для получения результата в градусах.

Выбор функции

Функцию acos() применяют, когда известен косинус угла и нужно найти сам угол. asin() используют при известном синусе, atan() - при известном тангенсе. Для преобразования результата в градусы используют комбинацию rad2deg(acos($num)).

Аналоги в других языках

Python

import math
result = math.acos(0.5)
print(result)  # 1.0471975511965979

JavaScript

let result = Math.acos(0.5);
console.log(result);  // 1.0471975511965979

MySQL

SELECT ACOS(0.5);  -- возвращает 1.0471975511965979

C++

#include <cmath>
double result = acos(0.5);  // 1.0472

Основное отличие PHP-версии - автоматическое возвращение NAN при недопустимом аргументе. В некоторых языках может возникать ошибка времени выполнения.

Типичные ошибки

Передача значения вне диапазона

<?php
// Некорректный аргумент
$angle = acos(1.5);
if (is_nan($angle)) {
    echo "Ошибка: аргумент вне диапазона [-1, 1]";
}
?>
Ошибка: аргумент вне диапазона [-1, 1]

Использование результата без проверки

<?php
$value = acos('invalid');
// Приведение строки к float даст 0, но лучше явно проверять
var_dump($value);
?>
float(1.5707963267949)

Неявное приведение типов

<?php
// PHP преобразует строку в число
$result = acos("0.5");
echo $result;
?>
1.0471975511966

История изменений

В PHP 8.0 функция acos() не претерпела значительных изменений. Основные аспекты:

  • Строгая типизация: при включенном режиме strict_types передача нечисловых значений вызывает TypeError.
  • Улучшена обработка специальных значений NAN и INF.
  • Совместимость с предыдущими версиями сохранена полностью.

В ранних версиях PHP (до 5.3) поведение при недопустимых аргументах могло отличаться на разных платформах.

Расширенные примеры применения

Преобразование результата в градусы

Пример php
<?php
$radians = acos(0.8660254);
$degrees = rad2deg($radians);
echo "Угол: {$degrees}°";
?>
Угол: 30.000000000000004°

Решение геометрической задачи

Вычисление угла треугольника по трем сторонам (теорема косинусов):

Пример php
<?php
$a = 5; $b = 6; $c = 7;
// Угол против стороны c
$cosC = ($a*$a + $b*$b - $c*$c) / (2*$a*$b);
$angleC = rad2deg(acos($cosC));
echo "Угол C: {$angleC}°";
?>
Угол C: 78.463040967185°

Обработка пользовательского ввода с проверкой

Пример php
<?php
function safeAcos($value) {
    $num = floatval($value);
    if ($num < -1 || $num > 1) {
        throw new InvalidArgumentException("Значение должно быть между -1 и 1");
    }
    return acos($num);
}

try {
    echo safeAcos(0.3);
} catch (Exception $e) {
    echo "Ошибка: " . $e->getMessage();
}
?>
1.2661036727795

Создание анимации движения по окружности

Пример php
<?php
// Параметрическое уравнение окружности через acos
$radius = 100;
$centerX = 200;
$centerY = 200;

for ($t = 0; $t <= 1; $t += 0.1) {
    $angle = acos(1 - 2*$t); // Преобразование параметра
    $x = $centerX + $radius * cos($angle);
    $y = $centerY + $radius * sin($angle);
    echo "Точка: ($x, $y)\n";
}
?>
Точка: (300, 200)
Точка: (292.70509831248, 155.57275643858)
... и т.д.

PHP acos function comments

En
Acos Arc cosine