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