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

Арккосинус в JavaScript: руководство с примерами
Раздел: Математика, Тригонометрия
acos(number): number

Описание функции Math.acos()

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

Использование функции актуально в геометрии, компьютерной графике, физических симуляциях и других областях, где требуется вычисление угла по известному значению его косинуса.

Функция принимает один аргумент:

  • x – число, косинус угла которого необходимо найти. Должно находиться в диапазоне от -1 до 1 включительно.

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

  • Число в радианах от 0 до π (приблизительно от 0 до 3.14159...).
  • Если аргумент x выходит за пределы диапазона [-1, 1], возвращается NaN (Not a Number).
  • Если аргумент равен 1, возвращается 0.
  • Если аргумент равен -1, возвращается π.

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

Пример с нормальным значением в диапазоне:

console.log(Math.acos(0.5));
1.0471975511965979

Пример с граничными значениями:

console.log(Math.acos(1));
console.log(Math.acos(-1));
console.log(Math.acos(0));
0
3.141592653589793
1.5707963267948966

Пример с недопустимым значением:

console.log(Math.acos(2));
console.log(Math.acos('текст'));
NaN
NaN

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

Библиотека Math предоставляет другие обратные тригонометрические функции:

  • Math.asin(x) – возвращает арксинус числа (значение в радианах от -π/2 до π/2). Используется, когда известно значение синуса.
  • Math.atan(x) – возвращает арктангенс числа (значение в радианах от -π/2 до π/2). Основная функция для нахождения угла по тангенсу.
  • Math.atan2(y, x) – возвращает угол между положительной осью X и точкой (x, y). Предпочтительнее Math.atan() при работе с декартовыми координатами, так как корректно определяет квадрант.

Выбор функции зависит от известной тригонометрической величины (косинус, синус, тангенс) и требуемого диапазона углов.

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

Концепция арккосинуса присутствует во многих языках, но синтаксис и особенности могут отличаться.

PHP: Функция acos() принимает и возвращает число с плавающей точкой.

echo acos(0.5); // 1.0471975511966
1.0471975511966

Python: В модуле math функция acos() работает аналогично. При значении вне диапазона вызывает ошибку ValueError.

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

MySQL: Математическая функция ACOS() возвращает NULL, если аргумент вне диапазона.

SELECT ACOS(0.5); -- 1.0471975511965979
1.0471975511965979

C/C++: В стандартной библиотеке math.h функция acos() принимает и возвращает double. При ошибке домена может устанавливать errno.

#include 
#include
int main() {
printf("%f", acos(0.5)); // 1.047198
return 0;
}
1.047198

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

Наиболее частая ошибка – передача значения, выходящего за математическую область определения функции.

// Попытка вычислить arccos для числа больше 1
let result = Math.acos(1.0001);
console.log(result); // NaN
NaN

Ошибки могут возникать при непрямой передаче значений, например, из-за погрешности вычислений:

let cosValue = Math.cos(Math.PI); // Теоретически -1, но из-за точности...
console.log(cosValue); // -1.0000000000000002 (чуть меньше -1)
let angle = Math.acos(cosValue);
console.log(angle); // NaN
-1.0000000000000002
NaN

Решение – использование проверки и принудительного ограничения диапазона:

function safeAcos(x) {
if (x > 1) return 0;
if (x < -1) return Math.PI;
return Math.acos(x);
}

Изменения в последних версиях

Функция Math.acos() является частью первоначальной спецификации ECMAScript 1 (1997 год) и с тех пор остается стабильной. Существенных изменений в её поведении или синтаксисе в последних версиях стандарта ECMAScript (ES6/ES2015 и новее) не вносилось.

В контексте веб-браузеров и сред выполнения JavaScript (таких как Node.js) функция всегда была доступна и ведет себя одинаково.

Расширенные примеры использования

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

Пример javascript
function triangleAngles(a, b, c) {
// Вычисление углов в радианах
let alpha = Math.acos((b*b + c*c - a*a) / (2*b*c));
let beta = Math.acos((a*a + c*c - b*b) / (2*a*c));
let gamma = Math.acos((a*a + b*b - c*c) / (2*a*b));

// Преобразование в градусы
const toDegrees = rad => rad * 180 / Math.PI;

return {
alpha: toDegrees(alpha),
beta: toDegrees(beta),
gamma: toDegrees(gamma)
};
}

// Треугольник со сторонами 5, 6, 7
console.log(triangleAngles(5, 6, 7));
{ alpha: 44.415308597, beta: 57.121649196, gamma: 78.463042206 }

Использование для расчета угла обзора в 3D-графике или обработке изображений:

Пример javascript
// Расчет угла между векторами в 2D пространстве
function angleBetweenVectors(ax, ay, bx, by) {
// Скалярное произведение
let dotProduct = ax * bx + ay * by;
// Модули векторов
let magA = Math.sqrt(ax*ax + ay*ay);
let magB = Math.sqrt(bx*bx + by*by);
// Косинус угла
let cosTheta = dotProduct / (magA * magB);
// Возвращаем угол в градусах
return Math.acos(cosTheta) * 180 / Math.PI;
}

console.log(angleBetweenVectors(1, 0, 0, 1)); // Угол между осью X и осью Y
90

Пример с обработкой пользовательского ввода и отсечением значения:

Пример javascript
function calculateAngleFromCosine(cosValue) {
// Приведение к числу и ограничение диапазона
let x = parseFloat(cosValue);
if (isNaN(x)) return 'Некорректный ввод';
x = Math.max(-1, Math.min(1, x)); // Ограничение между -1 и 1
let angleRad = Math.acos(x);
let angleDeg = (angleRad * 180 / Math.PI).toFixed(2);
return `Угол: ${angleRad.toFixed(4)} рад (${angleDeg}°)`;
}

console.log(calculateAngleFromCosine(0.7071));
console.log(calculateAngleFromCosine('1.5')); // Значение будет ограничено до 1
Угол: 0.7854 рад (45.00°)
Угол: 0.0000 рад (0.00°)

JS acos function comments

En
Acos Returns the arccosine of a number (in radians)