При работе с тригонометрическими функциями в C++Builder необходимо подключать соответствующий заголовочный файл (библиотеку) – math.h и Math.hpp. Во всех тригонометрических функциях угол задаётся в радианах.
#include <math.h>
#include <Math.hpp>
DegToRad – преобразование из угла в радиану
Тригонометрическая функция DegToRad принимает значение угла типа double и переводит его в радиану.
double Rad = DegToRad((double)90);
// => 1,5707963267949
CycleToRad – преобразование из цикла в радиану
Тригонометрическая функция CycleToRad принимает значение цикла типа double и переводит его в радиану.
double Rad = CycleToRad(0.25); //четверть периода
// => 1,5707963267949
Вычисление синус и косинус угла
Чтобы вычислить синус или косинус угла, сначала необходимо перевести число в радианы.
double Sin = sin(DegToRad((double)45));
// => 0,707106781186548
double Cos = cos(DegToRad((double)45));
// => 0,707106781186548
Обратные тригонометрические функции
Все обратные тригонометрические функции рассчитывают значения:
- acos и acosl в диапазоне [0, p];
- asin, asinl, atan, atan2, atan2l и atanl в диапазоне [~π/2, π/2].
Как и другие тригонометрические функции значения возвращаются в радианах. Чтобы получить значение угла в градусах или в доле периода необходимо применить функции преобразования RadToDeg и RadToCycle.
double angle = atan(90); //В радианах => 1,55968567289729
double angle = RadToDeg(atan(90)); //В градусах => 89,3634064240365
double angle = RadToCycle(atan(90)); //В долях периода => 0,248231684511213
Если заданный аргумент в функциях acos, acosl, asin и asinl не входит в диапазон значений [-1, +1], то генерируется ошибка, которая оповещает о выходе значения за пределы области определения (EDOM).
Если заданный аргумент в гиперболических функциях tosh, coshl, sinh и sinhl будет слишком большой, то генерируется ошибка, которая оповещает о выходе значения за диапазон допустимых значений (ERANGE).
Таблица тригонометрических функций
Функция | Синтаксис | Описание | Заголовочный файл |
---|---|---|---|
acos | double acos(double x) | Вычисляет арккосинус угла | math.h |
acosl | long double acosl(long double x) | Вычисляет арккосинус угла | math.h |
ArcCos | Extended ArcCos(Extended X) | Вычисляет арккосинус угла | Math.hpp |
ArcCosh | Extended ArcCosh(Extended X) | Вычисляет гиперболический арккосинус угла | Math.hpp |
ArcSin | Extended ArcSin(Extended X) | Вычисляет арксинус угла | Math.hpp |
ArcSinh | Extended ArcSinh(Extended X) | Вычисляет гиперболический арксинус угла | Math.h |
ArcTan2 | Extended ArcTan2(Extended Y, Extended X) | Вычисляет арктангенс (Y/X) угла | Math.hpp |
ArcTanh | Extended ArcTanh(Extended X) | Вычисляет гиперболический арктангенс угла | Math.hpp |
asin | double asin(double x) | Вычисляет арксинус угла | math.h |
asinl | long double asinl(long double x) | Вычисляет арксинус угла | math.h |
atan | double atan(double x) | Вычисляет арктангенс угла | math.h |
atan2 | double atan2(double y, double x) | Вычисляет арктангенс (у/x) угла | math.h |
atan2l | long double atan2l(long double y, long double x) | Вычисляет арктангенс (у/x) угла | math.h |
cos | double cos(double x) | Вычисляет косинус угла | math.h |
cosh | double cosh(double x) | Вычисляет гиперболический косинус угла | math.h |
Cosh | Extended Cosh(Extended X) | Вычисляет гиперболический косинус угла | Math.hpp |
coshl | long double coshl(long double x) | Вычисляет гиперболический косинус угла | math.h |
cosl | long double cosl(long double x) | Вычисляет косинус угла | math.h |
Cotan | Extended Cotan(Extended X) | Вычисляет котангенс угла | Math.hpp |
CycleToRad | Extended CycleToRad(Extended Cycles) | Вычисляет угол в радианах по значению в диапазоне Cycles: 2π*Cycles | Math.hpp |
DegToRad | Extended DegToRad(Extended Degrees) | Вычисляет угол в радианах по значению в диапазоне Degrees: Degrees*π/180 | Math.hpp |
hypot | double hypot(double x, double y) | Вычисляет гипотенузу треугольника с катетами x и у | math.h |
Hypot | Extended Hypot(Extended X, Extended Y) | Вычисляет гипотенузу по катетам X и Y | Math.hpp |
hypotl | long double hypotl(long double x, long double y) | Вычисляет гипотенузу треугольника с катетами x и у | math.h |
RadToCycle | Extended RadToCycle(Extended Radians) | Вычисляет угол в периодах по значению в диапазоне Radians: Radians/(2π) | Math.hpp |
RadToDeg | Extended RadToDcg(Extended Radians) | Вычисляет угол в градусах по значению в диапазоне Radians: Radians*180/π | Math.hpp |
sin | double sin(double x) | Вычисляет синус угла | math.h |
SinCos | void SinCos(Extended Theta, Extended &Sin, Extended &Cos) | Вычисляет синус Sin и косинус Cos угла Theta | Math.hpp |
Sinh | Extended Sinh(Extended X) | Вычисляет гиперболический синус угла | Math.hpp |
sinh | double sinh(double x) | Вычисляет гиперболический синус угла | math.h |
sinhl | long double sinhl(long double x) | Вычисляет гиперболический синус угла | math.h |
sinl | long double sinl(long double x) | Вычисляет синус угла | math.h |
Tan | Extended Tan(Extended X) | Вычисляет тангенс угла | Math.hpp |
tan | double tan(double x) | Вычисляет тангенс угла | math.h |
Tanh | Extended Tanh(Extended X) | Вычисляет гиперболический тангенс угла | Math.hpp |
tanh | double tanh(double x) | Вычисляет гиперболический тангенс угла | math.h |
tanhl | long double tanhl(long double x) | Вычисляет гиперболический тангенс угла | math.h |
tanl | long double tanl(long double x) | Вычисляет тангенс угла | math.h |