Misalkan Anda punya objek mengambang bebas di ruang angkasa. Anda memiliki vektor yang Anda ingin objek ini tuju, dan vektor yang mewakili arah yang saat ini dihadapinya. Dari keduanya, Anda bisa mendapatkan rotasi (matriks, angka empat, apa pun) yang mewakili perubahan orientasi untuk membawa kedua vektor ke dalam penyelarasan.
Jika Anda hanya memiliki kemampuan untuk menerapkan torsi (turunan dari kecepatan sudut) ke objek Anda, apa algoritma yang baik untuk menerapkan torsi dari waktu ke waktu yang tidak akan over / undershoot tujuan?
(Dalam hal ini, ini adalah kapal ruang angkasa yang ingin secara otomatis mengarahkan dirinya sendiri ke arah perjalanan menggunakan pendorong. Gulungan tidak relevan.)
physics
orientation
Karantza
sumber
sumber
Jawaban:
Ini dapat ditangani seperti kasus serupa untuk akselerasi linier.
Fakta pertama yang harus diperhatikan: Karena kapal memulai dengan kecepatan sudut nol, dan Anda ingin berakhir dengan kecepatan sudut nol, ini berarti bahwa perubahan total kecepatan harus sama dengan nol.
Dari sini kita dapat melihat bahwa integral dari akselerasi dari waktu ke waktu harus sama dengan nol - harus ada akselerasi positif "sebanyak" yang persis sama dengan akselerasi negatif.
Oleh karena itu, solusi Anda, apa pun itu, harus dibatasi ke properti ini: Akselerasi "total" yang sama ke depan dan ke belakang.
Berikut ini bentuk grafik percepatan Anda dari waktu ke waktu:
Melihat ini, ada begitu banyak kemungkinan bentuk dan bentuk yang bisa membuat akselerasi Anda! Mari kita membuat beberapa asumsi untuk bentuk akselerasi yang Anda inginkan, untuk memberikan jawaban yang mudah / ringkas.
Demi jawaban sederhana, saya akan memiliki akselerasi berada di salah satu dari tiga negara: maju, mundur, atau nol. Maju dan mundur akan sama besarnya, dan negara-negara dapat beralih secara instan. (tidak ada peningkatan akselerasi secara bertahap)
Anda dapat menemukan perubahan jarak untuk akselerasi yang diberikan selama periode waktu tertentu dengan persamaan ini:
Solusi paling sederhana di sini adalah mempercepat sampai Anda mencapai titik tengah, kemudian mengurangi kecepatan sisa perjalanan.
Kami akan mengambil
P
sebagai jarak total yang ingin Anda pindahkan:Pada dasarnya:
a
untuksqrt(P/a)
satuan waktu (satuan berdasarkan dari unit Anda untuk akselerasi)Ini bukan satu-satunya solusi. Ini akan membawa Anda ke sana dalam jumlah waktu tercepat (
2*sqrt(P/a)
). Tetapi bagaimana jika Anda menginginkan versi yang lebih santai?Dalam hal ini, Anda dapat mempercepat 1/3 dari jalan, meluncur untuk 1/3, dan memperlambat sisanya. Atau 1/4, meluncur 1/2, perlambat 1/4 juga.
Atau mungkin Anda dapat mempercepat untuk waktu yang tetap, dan kemudian melambat untuk waktu yang tetap, tetapi tunggu sampai Anda tiba di posisi yang tepat sebelum Anda mulai melambat.
sumber