tan()
tan(rad) вычисляет тангенс угла в радианах и возвращает double. Если угол в градусах — умножьте на PI / 180.0 перед вызовом.
Полная статья
Описание
Функция tan(rad) вычисляет тангенс угла, переданного в радианах. Результат может принимать любое вещественное значение — от отрицательной до положительной бесконечности. Это математически закономерно: тангенс не ограничен по диапазону и уходит в бесконечность при приближении угла к π/2 + πn.
Если у вас угол в градусах, его нужно предварительно перевести в радианы. Для этого умножьте значение в градусах на PI / 180.0.
Синтаксис
Используйте следующую функцию для вычисления тангенса заданного угла в радианах:
tan(rad)
Параметры
Функция допускает следующий параметр:
rad: Угол в радианах. Разрешенные типы данных: float.
Возвращает
Функция возвращает тангенс угла. Тип данных: double.
Пример кода
float angle = (2.0 / 3.0) * PI; // в радианах
double res = 0;
void setup() {
Serial.begin(9600);
res = tan(angle);
Serial.print("The angle tangent is: ");
Serial.println(res);
}
void loop() {
}
Где применяется
- Навигация и робототехника — вычисление угла поворота или направления движения по известным проекциям.
- Обработка сигналов датчиков — пересчёт угловых показаний IMU или энкодера в линейные величины.
- Геометрические расчёты — определение высоты объекта по известному расстоянию и углу наклона (например, с ультразвуковым дальномером и акселерометром).
- Генерация кривых — построение нелинейных зависимостей в анимациях или управлении сервоприводами.
Практические замечания
- Единицы измерения. Функция принимает только радианы. Передача градусов без перевода — одна из самых частых ошибок. Перевод:
rad = degrees * PI / 180.0. - Особые точки. При углах π/2, 3π/2 и других нечётных кратных π/2 тангенс стремится к бесконечности. Если ваш угол может приближаться к этим значениям, добавьте проверку или ограничение диапазона.
- Тип данных. Параметр
radдолжен быть типаfloatилиdouble. Если передать целое число, компилятор выполнит неявное приведение, но лучше явно объявить переменную какfloat. - Точность на AVR-платах. На платах с 8-битным микроконтроллером (Uno, Nano и т. п.)
floatиdoubleимеют одинаковую точность — 32 бита. Ожидать большей точности отdoubleна таких платах не стоит. - Отладка через Serial Monitor. Если результат выглядит неожиданно большим или равен бесконечности, проверьте, не попал ли угол в окрестность π/2. Выведите значение
radперед вызовом функции, чтобы убедиться в корректности входных данных.