Acos: примеры (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.04719755119661.0471975511966
Python: В модуле math функция acos() работает аналогично. При значении вне диапазона вызывает ошибку ValueError.
import math
print(math.acos(0.5)) # 1.04719755119659791.0471975511965979
MySQL: Математическая функция ACOS() возвращает NULL, если аргумент вне диапазона.
SELECT ACOS(0.5); -- 1.04719755119659791.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); // NaNNaN
Ошибки могут возникать при непрямой передаче значений, например, из-за погрешности вычислений:
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) функция всегда была доступна и ведет себя одинаково.
Расширенные примеры использования
Пример вычисления всех углов треугольника по длинам сторон с использованием теоремы косинусов:
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-графике или обработке изображений:
// Расчет угла между векторами в 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 и осью Y90
Пример с обработкой пользовательского ввода и отсечением значения:
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°)