JavaScript/Math/cos

カテゴリ:Book:JavaScript#Math/cos%20

Math.cos(x) は、引数 x の余弦(コサイン)を返します。ここで、x はラジアン単位で指定されます[1]

  • 引数 xNaN の場合、NaN を返します。
  • 引数 x+0 または -0 の場合、1 を返します。
  • 引数 xInfinity または -Infinity の場合、NaN を返します。

余弦を計算するプログラム

以下のプログラムは、ユーザーが入力した角度(度単位)の余弦を計算します。

const f = p => {
  for (;;) {
    a = prompt(`${p}は何度ですか?`);
    if (!isNaN(a))
      return a;
    alert(`${p}に、入力ミスがあります。 "${a}"`);
  }
}

for (;;) {
  const degrees = f("角度");
  const radians = degrees * Math.PI / 180;
  const cosine = Math.cos(radians);
  if (!isNaN(cosine)) {
    alert(`${degrees}度の余弦は ${cosine.toFixed(3)} です。`);
    break;
  }
  alert("入力が大きすぎます。");
}

このプログラムでは、Math.cos を使用して角度の余弦を計算しています。ユーザーが入力した角度が NaNInfinity の場合、適切に処理されます。

余弦波を描画するプログラム

以下のプログラムは、余弦波を描画します。

const canvas = document.createElement('canvas');
document.body.appendChild(canvas);
const ctx = canvas.getContext('2d');
canvas.width = 800;
canvas.height = 400;

const amplitude = 100;
const frequency = 2;
const phase = 0;
const yOffset = canvas.height / 2;

ctx.beginPath();
ctx.moveTo(0, yOffset);

for (let x = 0; x < canvas.width; x++) {
  const radians = (x / canvas.width) * 2 * Math.PI * frequency + phase;
  const y = yOffset - amplitude * Math.cos(radians);
  ctx.lineTo(x, y);
}

ctx.strokeStyle = 'blue';
ctx.lineWidth = 2;
ctx.stroke();

このプログラムでは、Math.cos を使用して余弦波を描画しています。amplitude は振幅、frequency は周波数、phase は位相を表します。

注意点

  • ラジアン単位: Math.cos はラジアン単位で角度を受け取るため、度単位の角度をラジアンに変換する必要があります。
  • 精度: 浮動小数点演算の特性上、Math.cos の結果には微小な誤差が含まれることがあります。

脚註

  1. これは、数学的には単位円上の角度 x に対応する点のx座標を返します。

外部リンク

カテゴリ:Book:JavaScript#Math/cos%20 カテゴリ:JavaScript
カテゴリ:Book:JavaScript カテゴリ:JavaScript カテゴリ:Pages using the JsonConfig extension