Anda ingin pergi dari dunia planar, ke dunia silindris.
Rotasi di sekitar sumbu x (dalam koordinat homogen) terlihat seperti ini:
| 1 0 0 0 |
Rx = | 0 ca -sa 0 |
| 0 sa ca 0 |
| 0 0 0 1 |
Dimana:
ca = cos(angle) and sa = sin(angle)
Untuk menghitung sudut, lihat gambar. Pi / 2 dibatalkan dan Anda dibiarkan dengan:
angle = offset_from_character.z - radius
Juga, lihat gambar. Sudut titik yang diproyeksikan tergantung pada jarak horizontal dari karakter, jarak dari bola tergantung pada vertikal.
new_position = character_position - vec3(0,radius,0) + Rx * vec3(0,radius+_old_position.y,0)
pastikan untuk menyisihkan hal-hal yang ada di cakrawala, jika tidak seluruh dunia akan membungkusnya.
Penafian: Saya belum menguji ini dan saya bukan ahli matematika, tetapi jawabannya adalah seperti ini. Seseorang tolong perbaiki saya jika saya salah.