Saya baru-baru ini mengerjakan game dengan menggunakan OpenGL dan C ++ melalui GLFW.
Dalam permainan, saya memiliki pesawat dengan menara yang terpasang di sana. Airship bergerak dalam koordinat ruang dunia dan turret 'mengikutinya'.
Menara ini memiliki ruang koordinat sendiri untuk arah tampilan / arahnya. Pada dasarnya, ketika turret mengarah ke arah (0,0,1)
, itu bertujuan sejajar dengan arah pergerakan airships.
Untuk memberi menara target ruang dunia, saya memiliki matriks yang mengambil koordinat ruang dunia dan mengubahnya menjadi koordinat ruang menara.
Saat turret menyala, saya ingin memunculkan proyektil di ruang dunia, jadi adakah cara elegan menggunakan matriks transformasi saya untuk mengubah koordinat ruang menara kembali ke ruang dunia?
Cara yang lebih umum untuk mengajukan pertanyaan mungkin: jika saya memiliki matriks M
yang mengambil koordinat dari ruang A
ke ruang B
. Apakah ada cara mudah untuk menggunakan M
untuk mendapatkan koordinat dari B
ke A
?
sumber
Jika matriks transformasi Anda adalah matriks rotasi maka Anda dapat menyederhanakan masalah dengan mengambil keuntungan dari fakta bahwa kebalikan dari matriks rotasi adalah transpos dari matriks itu.
Jika matriks transformasi Anda mewakili rotasi yang diikuti oleh terjemahan, maka perlakukan komponen secara terpisah. Kebalikannya setara dengan mengurangi terjemahan dan kemudian menerapkan transpose dari matriks rotasi.
sumber
Dalam matriks lib Anda mungkin ada fungsi yang disebut terbalik. Mungkin itulah yang Anda cari.
sumber