Atölye › Ay'a İniş › 4/31. adım
Aracın yere değip değmediğini anlamak için zeminin herhangi bir x'teki yüksekliğini bilmemiz gerekecek; yalnız
noktalarda değil, aralarında da. İki nokta arasında zemin düz bir çizgi. O hâlde: x'in solundaki ve sağındaki
noktayı bul, x'in aradaki yolun ne kadarında olduğuna göre iki yüksekliği karıştır.
Buna doğrusal ara değer bulma (linear interpolation) denir; oyunlarda en çok kullanılan formüllerden biridir: renkleri geçişli değiştirmek, bir şeyi A'dan B'ye yumuşakça kaydırmak hep bununla yapılır.
```js
// The ground between two points is a straight line: find where x is along it.
function groundY(x) {
const i = Math.max(0, Math.min(ground.length - 2, Math.floor(x / STEP)))
const t = (x - i * STEP) / STEP
return ground[i] + (ground[i + 1] - ground[i]) * t
}
```Math.floor(x / STEP) → x'in solundaki noktanın sıra numarası (100 / 40 = 2.5 → 2).Math.max(0, Math.min(ground.length - 2, ...)) → bu numarayı 0 ile sondan ikinci nokta arasında tut; böylece
ground[i + 1] hep var olur (ekranın dışındaki x'lerde bile).const t = (x - i * STEP) / STEP → x, i. noktadan sonraki noktaya giden yolun ne kadarında: solda 0,
ortada 0.5, sağda 1.ground[i] + (ground[i + 1] - ground[i]) * t → soldaki yükseklikten başla, iki yükseklik arasındaki farkın t
kadarını ekle. Örnek: 100 ile 200 arasında, yolun yarısında → 100 + 100 × 0.5 = 150.makeGround fonksiyonunun kapanış }'inin altına bir boş satır bırak ve yorumuyla birlikte groundY fonksiyonunu
yaz. Çalıştır: ekran değişmez, kontroller yeşil olmalı.
Beceriler: Hız ve yerçekimi, Fonksiyonlar