Signatur
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
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));
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));
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));
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 nicht0, sondern etwa-0.448. Rechne Grad vorher mitdeg * Math.PI / 180um. - Gleitkomma-Ungenauigkeit:
Math.PIist nur eine Näherung von π. Deshalb liefertMath.cos(Math.PI / 2)einen winzigen Wert (6.12e-17) statt exakt0. Vergleiche also mit einer Toleranz, etwaMath.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
BigIntwirft die Methode einenTypeError.