Saya mencoba menerapkan bentuk navigasi proporsional yang paling sederhana , misal, rudal berputar ke arah bahwa bearing-to-targetnya berubah, dan begitu bearing-to-targetnya tidak berubah, ia berada di jalur intersep.
Jadi, saya memiliki rudal 2d yang bergerak dengan kecepatan konstan ke arah yang dihadapinya, yang dapat berubah dengan kecepatan konstan, dan setiap interval saya memperbarui rudal dengan sesuatu seperti:
Position += VectorProduct (Direction * Speed * TimePassed)
PreviousTargetBearing = TargetBearing
TargetBearing = AngleBetween(TargetPosition, Position)
TargetBearingDelta = TargetBearing - PreviousTargetBearing
If TargetBearingDelta > 0: MissileDirection += TurnRate * TimePassed
If TargetBearingDelta < 0: MissileDirection -= TurnRate * TimePassed
Masalahnya adalah, rudal selalu berosilasi di sekitar arah peluncurannya, karena begitu rudal berubah pertama kali, ini membalikkan tanda TargetBearingDelta, membuatnya kemudian berputar ke arah yang berlawanan, dan seterusnya ...
Apa cara paling sederhana untuk menyelesaikan masalah ini? Saya yakin saya melewatkan sesuatu yang sederhana.
Pertanyaan StackOverflow terkait: Bagaimana cara membuat "rudal intersep" untuk sebuah game?
Untuk mengulangi, saya tertarik secara khusus dalam menerapkan algoritma navigasi proporsional , bukan pada algoritma homing secara umum.
Pembaruan: Saya kira jawaban yang jelas adalah tidak memeriksa bantalan dan menyesuaikan judul setiap belokan, tetapi untuk bergantian di antara keduanya. Saya akan mencobanya.