Bezier eğrisi nedir? Kuadratik ve kübik Bezier nasıl hesaplanır, oyunlarda nerede kullanılır?
Cevap
Bezier eğrisi, kontrol noktalarıyla tanımlanan pürüzsüz bir eğridir. Eğri ilk ve son noktadan geçer, aradaki kontrol noktaları ise eğriyi kendine doğru "çeker" ama genelde üzerinden geçilmez. t 0'dan 1'e giderken eğri üzerinde ilerlenir.
De Casteljau yöntemi: Art arda lerp yapmaktır.
- Kuadratik (3 nokta):
B(t) = (1-t)² P0 + 2(1-t)t P1 + t² P2 - Kübik (4 nokta):
B(t) = (1-t)³ P0 + 3(1-t)²t P1 + 3(1-t)t² P2 + t³ P3
Vector3 Quadratic(Vector3 p0, Vector3 p1, Vector3 p2, float t)
{
Vector3 a = Vector3.Lerp(p0, p1, t);
Vector3 b = Vector3.Lerp(p1, p2, t);
return Vector3.Lerp(a, b, t);
}
Vector3 Cubic(Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float t)
{
float u = 1f - t;
return u*u*u*p0 + 3f*u*u*t*p1 + 3f*u*t*t*p2 + t*t*t*p3;
}
// Teğet (yön): kübiğin türevi
Vector3 CubicTangent(Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float t)
{
float u = 1f - t;
return 3f*u*u*(p1 - p0) + 6f*u*t*(p2 - p1) + 3f*t*t*(p3 - p2);
}Oyunlardaki kullanımlar: Kamera yolları (cutscene), mermi ve fırlatma yayları, güdümlü füze yörüngeleri, yol/ray/nehir spline'ları, UI animasyonları ve easing eğrileri (CSS cubic-bezier ve Unity AnimationCurve benzeri).
Önemli tuzak: t sabit hızla artırıldığında eğri üzerinde sabit hızla hareket edilmez; kontrol noktalarının sık olduğu yerde nesne yavaşlar. Sabit hız için eğri önceden örneklenip bir arc-length tablosu çıkarılır ve mesafeye göre t bulunur. Uzun yollar için birden fazla kübik segment birleştirilir (Catmull-Rom veya B-spline); Unity'de Splines paketi bunu hazır sunar.
İlgili Oyun Matematiği soruları
- Vektörlerde dot product ve cross product oyunlarda ne için kullanılır?
- AABB ve sphere çarpışma testleri matematiksel olarak nasıl yapılır? Hangisi ne zaman tercih edilir?
- Transform matrisleri nedir? Local space ile world space arasında nasıl dönüşüm yapılır?
- Quaternion ile Euler açıları arasındaki fark nedir? Gimbal lock nedir?
- Lerp ve Slerp nedir? Lerp'ü Update içinde yanlış kullanmak neden sorun yaratır?
- Vektör normalize etmek ne demektir? Çapraz harekette neden gereklidir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.