std::asin în C++

Funcțiile trigonometrice inverse: din valoarea sinusului, cosinusului sau tangentei obții unghiul, în radiani.

Sintaxă
double asin(double x);  // rezultat în [-π/2, π/2]
double acos(double x);  // rezultat în [0, π]
double atan(double x);  // rezultat în (-π/2, π/2)

Ce face std::asin

std::asin, std::acos și std::atan fac drumul invers față de sin, cos, tan: primesc o valoare și returnează unghiul, în radiani. Pentru grade înmulțești cu 180 / π.

asin și acos acceptă doar valori între -1 și 1; altfel rezultatul este NaN. atan nu poate deosebi cadranele (de exemplu (1, 1) de (-1, -1)); pentru unghiul unui punct folosește std::atan2.

Parametri

Parametru Descriere
x Valoarea (pentru asin/acos între -1 și 1).

Ce returnează

Unghiul, în radiani.

Exemple

Exemplul 1: Înapoi la grade

#include <cmath>
#include <numbers>
#include <print>

int main() {
    constexpr double in_grade = 180.0 / std::numbers::pi;

    std::println("asin(0.5) = {:.2f}°", std::asin(0.5) * in_grade);
    std::println("acos(0.5) = {:.2f}°", std::acos(0.5) * in_grade);
    std::println("atan(1)   = {:.2f}°", std::atan(1.0) * in_grade);

    double prea_mare = 1.5;
    std::println("asin(1.5) = {}", std::asin(prea_mare));
}

Rezultat

asin(0.5) = 30.00°
acos(0.5) = 60.00°
atan(1)   = 45.00°
asin(1.5) = nan

Exemplul 2: Panta unui drum

Un drum urcă 12 m pe 100 m orizontal (panta 12%). Unghiul este atan(12 / 100).

#include <cmath>
#include <numbers>
#include <print>

int main() {
    double panta = 12.0 / 100.0;
    std::println("Unghiul pantei: {:.2f}°", std::atan(panta) * 180.0 / std::numbers::pi);
}

Rezultat

Unghiul pantei: 6.84°

Greșeli frecvente

  • Dai lui acos rezultatul unui calcul care, din rotunjire, a ieșit 1.0000000002: primești NaN. Limitează valoarea cu std::clamp(x, -1.0, 1.0).

Comenzi înrudite

  • std::atan2: Calculează unghiul punctului (x, y) față de axa orizontală, între -π și π, ținând cont de cadran.
  • std::sin: Funcțiile trigonometrice sinus, cosinus și tangentă; unghiul se dă în radiani, nu în grade.
  • std::numbers::pi: Constanta π cu precizia maximă a tipului double, plus alte constante matematice: e, √2, ln 2, φ.