JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで発射体(Projectile)クラスを作成し、高さと水平距離を計算する方法

問題

JavaScriptでProjectile(発射体)クラスを作成することを求められています。このクラスは、初期化時に次の3つの引数を受け取ります。

  • 開始時の高さ(0 ≤ h0 < 200)
  • 初速度(0 < v0 < 200)
  • 発射時の投射角(0° < a < 90°、度数法で指定)

さらに、Projectileクラスには以下のメソッドを実装する必要があります。

  • horizメソッド — 引数として時間tを受け取り、発射体がそれまでに移動した水平距離を計算して返します(double型を受け取り、double型を返します)。

コード例

このクラスのコードは次のようになります。

class Projectile {
   constructor(h, u, ang) {
      this.h = h;
      this.u = u;
      this.ang = ang;
   }
}

Projectile.prototype.horiz = function(t) {
   const dist = 2 * Math.cos(this.ang) * t;
   return dist;
};

const p = new Projectile(5, 2, 45);
const horizontal = p.horiz(.2);
console.log(horizontal);

出力

実行結果は次のとおりです。

0.2101287955270919

解説

constructor内では、渡された3つの引数(高さh、初速度u、角度ang)をそれぞれインスタンスプロパティとして保存しています。一方、horizメソッドは時間tを受け取り、三角関数Math.cos()を使って水平方向の移動距離を計算し、その値を呼び出し元に返します。

注意点として、JavaScriptのMath.cos()は角度をラジアン単位で受け取ります。上記の例では45がそのままラジアンとして扱われているため、度数法の角度を使いたい場合はMath.cos(this.ang * Math.PI / 180)のように変換してから渡す必要があります。

  1. CSSのnth-childでHTML要素に奇数・偶数のスタイルを追加する方法

    Webページを作っていると、リストやカードなど複数の要素に対して「奇数番目」「偶数番目」で異なるスタイルを適用したい場面がよくあります。そのようなときは、CSSの擬似クラスである nth-child(odd) と nth-child(even) を使えば、要素に一つずつクラスを手動で追加しなくても、簡単にスタイルを切り替えることができます。CSSのnth-childを使った基本例以下のコードでは、subjectName クラスを持つ要素に対して、奇数番目の要素は青色、偶数番目の要素は紫色を自動的に適用しています。サンプルコード<!DOCTYPE html> <html lan

  2. JavaScriptでASCII文字列と16進数を相互変換するコンバータークラスの実装方法

    課題今回は、以下の2つのメンバー関数を持つJavaScriptクラスを作成する必要があります。toHex: ASCII文字列を受け取り、それに対応する16進数の文字列を返します。toASCII: 16進数の文字列を受け取り、それに対応するASCII文字列を返します。たとえば、関数への入力が次のようになっているとします。入力const str = this is a string;この場合、変換後の16進数とASCII文字列はそれぞれ以下のようになります。74686973206973206120737472696e67this is a string変換の仕組みASCIIから16進数への変換では