Math.sin / cos / tan / atan2 în JavaScript

Numere și matematică Toate browserele, Node.js

Funcțiile trigonometrice și inversele lor; unghiurile sunt în radiani.

Sintaxă
Math.sin(unghiRad)
Math.cos(unghiRad)
Math.tan(unghiRad)
Math.atan2(y, x)

Ce face Math.sin / cos / tan / atan2

Math.sin, Math.cos și Math.tan primesc unghiul în radiani, nu în grade. Transformarea: radiani = grade * Math.PI / 180.

Funcțiile inverse Math.asin, Math.acos și Math.atan returnează un unghi în radiani. Math.atan2(y, x) returnează unghiul punctului (x, y) față de axa orizontală, între −π și π, ținând cont de cadran; este cea folosită pentru direcții și rotiri în jocuri și grafică.

Parametri

Parametru Descriere
unghiRad Unghiul în radiani (pentru sin, cos, tan).
y, x Coordonatele punctului (pentru atan2; atenție la ordine: întâi y).

Ce returnează

Un număr: valoarea funcției sau un unghi în radiani.

Exemple

Exemplul 1: Grade și radiani

const rad = (grade) => grade * Math.PI / 180;

console.log(Math.sin(rad(30)));
console.log(Math.cos(rad(60)).toFixed(4));
console.log(Math.tan(rad(45)).toFixed(4));
console.log(Math.asin(1) * 180 / Math.PI);
console.log(Math.acos(0.5) * 180 / Math.PI, Math.atan(1) * 180 / Math.PI);

Rezultat

0.49999999999999994
0.5000
1.0000
90
60.00000000000001 45

Exemplul 2: Direcția spre un punct cu atan2

const grade = (rad) => Math.round(rad * 180 / Math.PI);

console.log(grade(Math.atan2(1, 1)));
console.log(grade(Math.atan2(1, -1)));
console.log(grade(Math.atan2(-1, -1)));

Rezultat

45
135
-135

Exemplul 3: Puncte pe un cerc

Math.sin pentru 270° dă aproape -1, iar Math.cos o valoare negativă foarte mică (nu exact 0), pe care Math.round o rotunjește la -0. În calcule, -0 se comportă ca 0.

const raza = 10;

for (let i = 0; i < 4; i++) {
  const unghi = (i * Math.PI) / 2;
  console.log(Math.round(raza * Math.cos(unghi)), Math.round(raza * Math.sin(unghi)));
}

Rezultat

10 0
0 10
-10 0
-0 -10

Greșeli frecvente

  • Dai unghiul în grade: Math.sin(30) nu este 0,5, ci sinusul a 30 de radiani (aproximativ −0,988).
  • Inversezi parametrii lui atan2. Ordinea este (y, x), nu (x, y).

Comenzi înrudite

  • Math.hypot: Calculează rădăcina pătrată a sumei pătratelor: ipotenuza sau distanța dintre două puncte.
  • Math.sinh / cosh / tanh: Funcțiile hiperbolice (sinus, cosinus, tangentă hiperbolică) și inversele lor.
  • Math.round / floor / ceil: Rotunjește un număr: la cel mai apropiat întreg, în jos sau în sus.