ปัญหา
เราต้องเขียนคลาส 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
คำอธิบายเพิ่มเติม
โค้ดมีปัญหา: Math.cos() รับค่าเป็นเรเดียน ไม่ใช่องศา ควรแปลง: `Math.cos(this.ang * Math.PI / 180)` สูตรระยะแนวนอนจริงคือ `v0 * cos(θ) * t` ไม่ใช่ `2 * cos(θ) * t`