Latihan 1: Physics-based Animation — Web Animation

Latihan 1 dari materi Physics-based Animation di Web Animation — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi dua function pegas. Kode awal sudah berisi function kosongnya dan empat baris console.log-nya; isi function-nya dan biarkan baris console.log seperti adanya.

simulateSpring(from, to, options), dengan options berisi { stiffness, damping, mass }:

  1. Mulai dari posisi from dengan kecepatan 0, dan dt = 1 / 60.
  2. Jalankan 4 langkah. Di tiap langkah hitung percepatan = (-stiffness × (posisi - to) - damping × kecepatan) / mass, lalu perbarui kecepatan dulu (kecepatan += percepatan × dt), baru posisi dengan kecepatan yang baru (posisi += kecepatan × dt).
  3. Kembalikan array 5 posisi: posisi awal, lalu posisi sesudah tiap langkah, masing-masing dibulatkan 4 desimal dengan Number(posisi.toFixed(4)). Pembulatan cuma untuk isi array; hitungannya tetap memakai angka utuh.

classifySpring(stiffness, damping, mass = 1):

  1. Hitung ratio = damping / (2 × Math.sqrt(stiffness × mass)).
  2. Kembalikan "underdamped" kalau ratio < 1, "critically-damped" kalau ratio === 1, dan "overdamped" kalau lebih dari 1.

Yang dinilai, empat baris console harus persis, berurutan:

  1. [0,2.7778,7.7932,14.534,22.5254]
  2. underdamped
  3. critically-damped
  4. overdamped

Nilai kembaliannya juga dinilai langsung: simulateSpring(50, 50, { stiffness: 100, damping: 10, mass: 1 })[4] harus 50 (pegas yang sudah di tujuan gak bergerak), dan classifySpring(100, 20, 4) harus "underdamped" (mass ikut dihitung).

Hint