Ce face std::sin
std::sin, std::cos și std::tan primesc unghiul în radiani. Un cerc complet are 2π radiani (360°), deci gradele se transformă cu grade * π / 180. Constanta π este std::numbers::pi (C++20).
Rezultatele sunt aproximări: sin(π) nu dă exact 0, ci un număr foarte mic, pentru că nici π nu poate fi reprezentat exact. Afișează cu un număr fix de zecimale.
Parametri
| Parametru | Descriere |
|---|---|
unghi_radiani |
Unghiul, în radiani. |
Ce returnează
Valoarea funcției: sin și cos între -1 și 1; tan orice număr real.
Exemple
Exemplul 1: Unghiuri uzuale, din grade
#include <cmath>
#include <numbers>
#include <print>
int main() {
for (double grade : {0.0, 30.0, 45.0, 60.0, 90.0}) {
double rad = grade * std::numbers::pi / 180.0;
std::println("{:>3}°: sin = {:.4f}, cos = {:.4f}", grade, std::sin(rad), std::cos(rad));
}
std::println("tan(45°) = {:.4f}", std::tan(std::numbers::pi / 4));
}
Rezultat
0°: sin = 0.0000, cos = 1.0000
30°: sin = 0.5000, cos = 0.8660
45°: sin = 0.7071, cos = 0.7071
60°: sin = 0.8660, cos = 0.5000
90°: sin = 1.0000, cos = 0.0000
tan(45°) = 1.0000
Exemplul 2: sin(π) nu este exact 0
#include <cmath>
#include <numbers>
#include <print>
int main() {
double s = std::sin(std::numbers::pi);
std::println("sin(pi) = {:.3e}", s);
std::println("Cu 6 zecimale: {:.6f}", s);
}
Rezultat
sin(pi) = 1.225e-16
Cu 6 zecimale: 0.000000
Exemplul 3: Înălțimea unei clădiri
Stai la 40 m de clădire și vezi vârful sub un unghi de 35°: înălțimea = distanța · tan(unghi).
#include <cmath>
#include <numbers>
#include <print>
int main() {
double distanta = 40.0;
double unghi = 35.0 * std::numbers::pi / 180.0;
std::println("Înălțimea: {:.1f} m", distanta * std::tan(unghi));
}
Rezultat
Înălțimea: 28.0 m
Greșeli frecvente
- Dai unghiul în grade:
std::sin(90)dă 0.894, nu 1. - Compari
std::cos(x) == 0: din cauza rotunjirilor, aproape niciodată nu este exact 0. Compară cu o toleranță.
Comenzi înrudite
std::asin: Funcțiile trigonometrice inverse: din valoarea sinusului, cosinusului sau tangentei obții unghiul, în radiani.std::atan2: Calculează unghiul punctului (x, y) față de axa orizontală, între -π și π, ținând cont de cadran.std::numbers::pi: Constanta π cu precizia maximă a tipului double, plus alte constante matematice: e, √2, ln 2, φ.std::hypot: Calculează ipotenuza, adică √(x² + y²), fără depășiri la valori mari; din C++17 și în 3 dimensiuni.