Cara ponsel menghitung putarannya sendiri
Looping tidak butuh kamera maupun wasit: ponsel mengukur lemparannya sendiri. Inilah yang terjadi sejak ponsel lepas dari tanganmu sampai skor muncul.
Dua sensor yang ada di setiap ponsel
Akselerometer mengukur gaya yang dirasakan ponsel. Saat tergeletak di meja, ia membaca tarikan gravitasi, sekitar 9,8 m/s². Giroskop mengukur seberapa cepat ponsel berputar pada masing-masing dari tiga sumbunya, dalam derajat per detik.
Keduanya dipasang di ponsel untuk memutar layar, menghitung langkah, dan menstabilkan foto. Looping membacanya lewat peramban, puluhan kali per detik.
Mendeteksi terbang
Begitu ponsel lepas dari tanganmu, tidak ada lagi yang mendorongnya. Ponsel berada dalam kondisi jatuh bebas, saat naik maupun saat turun, dan akselerometer nyaris tidak membaca apa-apa. Keheningan mendadak itulah tanda sebuah terbang. Terbang berakhir dengan satu lonjakan tajam, saat tangan atau kasur menghentikan ponsel.
Ponsel yang berputar mengaburkan gambaran itu: akselerometernya tidak persis berada di titik tengah, jadi putaran itu sendiri ikut menekannya. Karena itu gim tidak sekadar mencari angka nol. Gim memeriksa apakah yang dibaca akselerometer persis sama dengan yang bisa dijelaskan oleh putaran yang diukur giroskop. Ponsel yang diguncang di tangan, atau diputar seperti gasing di atas meja, tidak lolos uji itu.
Terbang harus berlangsung minimal 0,3 detik agar dihitung: naik sekitar sebelas sentimeter, cukup untuk membedakan lemparan dari kedutan tangan.
Menghitung putaran
Selama terbang, giroskop melaporkan kecepatan putar berkali-kali per detik. Kalikan tiap pembacaan dengan rentang waktu yang diwakilinya, jumlahkan semuanya, dan kamu mendapat total sudut yang ditempuh ponsel, apa pun sumbunya: ujung ke ujung (salto), pada sumbu panjangnya (guling), atau mendatar seperti gasing (putaran datar).
Satu putaran adalah 360°. Angka di layar adalah jumlah putaran penuh, dan sebuah putaran dihitung mulai dari 80%. Orang yang menonton lemparan melihat kira-kira seperlima putaran lebih banyak daripada yang ada dalam terbang bebasnya, karena ponsel sudah berputar di tangan saat dilepas dan masih berputar saat ditangkap. Papan peringkat sendiri ditentukan oleh total sudut, sampai ke derajatnya.
Dari mana angka tinggi berasal
Gim tidak melihat plafon: gim mengukur lama terbangnya. Benda yang dilempar ke atas dan ditangkap pada ketinggian yang sama menghabiskan separuh waktu di udaranya untuk naik dan separuhnya lagi untuk turun, dan dari situlah tinggi didapat: 0,5 detik di udara berarti sekitar 30 cm, 0,75 detik sekitar 70 cm, satu detik sekitar 1,2 m.
Itu perkiraan. Kalau kamu menangkap ponsel lebih rendah daripada titik lemparnya, angkanya sedikit menyanjungmu.
Saat sensor kewalahan
Setiap giroskop punya batas: kecepatan putar yang kalau terlampaui, ia terus menjawab dengan angka yang sama. Kami mengukur sekitar 1.150 °/s di sebagian ponsel Android, 2.300 °/s di yang lain, dan 4.000 °/s di iPhone keluaran baru, alias sebelas putaran per detik.
Saat lemparan melewati batas itu, gim tidak mengarang putaran yang hilang. Gim menyimpan angka minimum yang benar-benar terukur dan menyebutkannya di hasil, atau menolak lemparan kalau tidak ada yang bisa dijamin. Skor bisa lebih rendah daripada kenyataan; tidak pernah lebih tinggi.
Kenapa server yang memegang skor
Ponselmu merekam lemparan; ia tidak menilainya. Pengukuran mentahnya dikirim ke server gim, yang menghitung skor dengan aturan yang sama untuk semua orang dan memeriksa bahwa pengukuran itu memang menggambarkan terbang bebas sungguhan. Satu rekaman hanya bisa dihitung sekali.
Itulah yang membuat papan peringkat bisa dipercaya: tak seorang pun bisa mengirim angka, hanya lemparan. Tanpa jaringan, lemparan disimpan di ponsel (sampai dua belas lemparan, selama tujuh hari) dan dihitung begitu koneksi kembali.
Apa yang dibaca gim, dan apa yang tidak
Looping membaca sensor gerak dan tidak ada yang lain: tanpa kamera, tanpa mikrofon, tanpa lokasi. Apa yang direkam, dan berapa lama, tertulis di keterangan hukum.
Main LoopingBaca lebih lanjut
English Français Español Português Deutsch Italiano Nederlands Polski Türkçe Русский Українська العربية हिन्दी বাংলা Bahasa Indonesia Tiếng Việt ไทย 日本語 한국어 中文