Start · Sprachen · JavaScript · Referenz · Math.cos()

Math.cos()

Methode

Die statische Methode <code>Math.cos()</code> gibt den Kosinus eines Winkels im Bogenmaß zurück. Das Ergebnis liegt zwischen -1 und 1.

seit JavaScript ES1 (Baseline: alle Browser) Kategorie: method-property

Signatur

Math.cos(x)

Beschreibung

Math.cos() berechnet den Kosinus des übergebenen Winkels. Der Winkel muss im Bogenmaß (Radiant) angegeben werden, nicht in Grad. Das Ergebnis liegt immer im Bereich von -1 bis 1.

Die Methode braucht man häufig in Grafik und Animation, zum Beispiel für Kreisbahnen auf dem Canvas, Pendel- oder Wellenbewegungen, Rotationen in 2D/3D und zum Umrechnen von Polarkoordinaten in kartesische Koordinaten (x = r * Math.cos(θ)).

Da cos eine statische Methode von Math ist, ruft man sie immer als Math.cos() auf. Math ist kein Konstruktor. Nicht-numerische Argumente werden vorher in eine Zahl umgewandelt.

Parameter

Name Typ Default Beschreibung
$x Pflicht number Winkel im Bogenmaß. Werte, die keine Zahl sind, werden mit Number()-Semantik umgewandelt.

Rückgabewert

Typ
number
Beschreibung
Der Kosinus von x im Bereich [-1, 1]. Bei NaN, Infinity oder -Infinity ist das Ergebnis NaN.

Beispiele

Grundlegende Werte

console.log(Math.cos(0));
console.log(Math.cos(Math.PI));
console.log(Math.cos(Math.PI / 2));
console.log(Math.cos(Infinity));
1 -1 6.123233995736766e-17 NaN

Winkel in Grad umrechnen

const toRad = (deg) => deg * Math.PI / 180;
const cosDeg = (deg) => Math.cos(toRad(deg));

console.log(cosDeg(60).toFixed(4));
console.log(cosDeg(180));
0.5000 -1

Punkte auf einem Kreis berechnen (Polarkoordinaten)

const pointsOnCircle = (cx, cy, r, count) =>
  Array.from({ length: count }, (_, i) => {
    const angle = (2 * Math.PI * i) / count;
    return {
      x: Math.round(cx + r * Math.cos(angle)),
      y: Math.round(cy + r * Math.sin(angle))
    };
  });

console.log(pointsOnCircle(100, 100, 50, 4));
[ { x: 150, y: 100 }, { x: 100, y: 150 }, { x: 50, y: 100 }, { x: 100, y: 50 } ]

Weiche Pendelbewegung in einer Animation

const box = document.querySelector('#box');

const animate = (time) => {
  // Schwingt zwischen -100px und +100px, Periode ca. 2 s
  const offset = 100 * Math.cos(time / 1000 * Math.PI);
  box.style.transform = `translateX(${offset}px)`;
  requestAnimationFrame(animate);
};

requestAnimationFrame(animate);

// Wichtig · Fallstricke

  • Bogenmaß statt Grad: Der häufigste Fehler: Math.cos(90) ergibt nicht 0, sondern etwa -0.448. Rechne Grad vorher mit deg * Math.PI / 180 um.
  • Gleitkomma-Ungenauigkeit: Math.PI ist nur eine Näherung von π. Deshalb liefert Math.cos(Math.PI / 2) einen winzigen Wert (6.12e-17) statt exakt 0. Vergleiche also mit einer Toleranz, etwa Math.abs(a - b) < Number.EPSILON, oder runde das Ergebnis für die Anzeige.
  • Plattformabhängige Ergebnisse: Die Spezifikation legt die genaue Berechnung nicht fest. In verschiedenen Engines oder auf verschiedenen Plattformen kann sich daher die letzte Nachkommastelle unterscheiden.
  • Bei sehr großen Argumenten (z. B. 1e300) geht die Genauigkeit stark verloren.
  • Für Werte vom Typ BigInt wirft die Methode einen TypeError.