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
acosrezultatul unui calcul care, din rotunjire, a ieșit 1.0000000002: primești NaN. Limitează valoarea custd::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, φ.