Fisika: Kecepatan, Kelajuan, & Hukum Newton Kedua
Menerapkan rumus-rumus Fisika dalam aplikasi Flash nggak susah – walaupun nggak gampang juga. Kuncinya adalah tahu dasar-dasar matematika Vektor (dan Trigonometri tentunya) dan sedikit improvisasi dalam penerapan rumus Fisika. Dalam tutorial ini, saya akan menjelaskan beberapa contoh penerapan rumus-rumus fisika dengan ActionScript 2.0 .
Kalo Anda belum mengerti Trigonometri dan Matematika Vektor, saya sarankan agar mencari tutorial di Internet atau mungkin buku-buku SMU. Kedua topik tersebut menjadi dasar tutorial ini.
Kelajuan (speed)
Sekilas Kecepatan dan Kelajuan adalah hal yang sama. Secara teknis nggak begitu. Kelajuan adalah besaran skalar sedangkan Kecepatan adalah besaran vektor. Kelajuan nggak mempunyai arah, sedangkan kecepatan punya.
Rumus dasar kelajuan adalah :
v = d/t
d : jarak
t : waktu
Kecepatan (velocity)
Kecepatan adalah kelajuan suatu benda yang bergerak ke arah tertentu. Rumusnya sama dengan kelajuan, hanya saja ada komponen vektor (arah) di situ.
Gimana implementasinya dalam ActionScript? Gampang. Komponen d adalah jarak dalam satuan pixel dan komponen t adalah waktu atau frame . Misalnya gini, suatu MovieClip berpindah tempat sejauh 30 px dalam 10 frame. Maka dapat dikatakan bahwa kecepatannya adalah 3 px/frame. Karena menggunakan frame, seberapa cepat pergerakan MovieClip tersebut sangat ditentukan oleh nilai fps Flash movie. Makin tinggi fps semakin cepat MovieClip bergerak.
Contoh berikut ini menunjukkan sebuah MovieClip yang bergerak searah sumbu X dengan kecepatan 3 px/frame;
- _root.onEnterFrame = function(){
- myMC._x += 3;
- }
Untuk mendapatkan kecepatan dengan satuan waktu (detik), kita bisa menggunakan fungsi setInterval(). Kita ambil contoh di atas untuk membuat MyMC bergerak dengan kecepatan 3 px per 30 milidetik searah sumbu X.
- var intID = setInterval(moveMe,30);
- function moveMe(){
- myMC._x += 3;
- }
Catatan – Penggunaan function setInterval() membuat kecepatan myMC nggak tergantung fps. Berapapun fps yang digunakan, kecepatannya tetap 3px/ frame 30ms. Saya sendiri lebih suka menggunakan setInterval() daripada onEnterFrame karena lebih lebih ringan untuk CPU dan itu yang saya gunakan dalam tutorial ini. Untuk mendapatkan animasi yang kurang lebih sama dengan fps= 31, saya gunakan setInterval( … , 30). Jadi, saya harap Anda nggak bingung karena dalam teks saya tulis kecepatan xx/frame sedangkan di dalam contoh saya gunakan setInterval bukan onEnterFrame.
Terkadang dalam membuat sebuah scripted animation Anda hanya punya sudut dan kecepatan, tanpa mengetahui berapa kecepatan di sumbu X & sumbu Y. Untuk mengetahui kecepatan linear sebuah objek yang bergerak dalam sudut tertentu, Anda dapat menggunakan rumus berikut:
vx = Math.cos(sudut) * kecepatan
vy = Math.sin(sudut) * kecepatan
Ingat bahwa fungsi trigonometri dalam Flash membutuhkan nilai dalam satuan Radian.Jadi Anda perlu mengkonversi sudut ke dalam Radian.
Sebagai contoh, kita ingin membuat sebuah movieClip yang bergerak dalam kecepatan 3px/frame dalam sudut 45 derajat. Pertama kita harus tahu berapa sudut tersebut dalam Radian. Kemudian baru kita bisa menggerakkan MovieClip dengan mengeset properti _x dan _y .
- var angle:Number = 45;
- var speed:Number = 3;
- var intID = setInterval(moveMe,30);
- function moveMe(){
- var rad:Number = angle*Math.PI/180;
- var vx:Number = Math.cos(rad) * speed;
- var vy:Number = Math.sin(rad) * speed;
- myMC._x += vx;
- myMC._y += vy;
- }
Percepatan (acceleration)
Seperti halnya kecepatan, percepatan adalah vektor. Bedanya adalah kelajuan mengubah posisi sebuah objek, percepatan mengubah kecepatannya. Sederhananya, percepatan adalah nilai yang ditambahkan ke kecepatan.
Sebagai contoh, dalam snippet di bawah ini, myMC bergerak dalam kecepatan 3px/frame dengan percepatan 0.1. Artinya, dalam setiap frame, kecepatannya bertambah 0.1px/frame .
- var vx:Number = 3;
- var ax:Number = 0.1;
- var intID = setInterval(moveMe,30);
- function moveMe(){
- vx += ax;
- myMC._x += vx;
- }
Catatan – Percepatan nggak selalu bernilai positif, bisa saja negatif. Percepatan yang bernilai negatif disebut perlambatan (deceleration).
Hukum Newton II
Percepatan sebuah objek berbanding terbalik dengan massa dan berbanding lurus dengan gaya eksternal
F = m * a
F = force (gaya)
m = massa
a = percepatan
Sebagai contoh penerapannya dalam ActionScript kita buat sebuah movieclip bernama balon_mc yang menerima gaya dorong (ke atas) dan gaya tarik (ke bawah). Jika gaya dorong lebih besar dari gaya tarik, maka balon bergerak ke atas.
- var gayadorong:Number = 3 ;
- var gayatarik:Number = -2;
- var massa:Number = 10;
- var ay:Number = (gayadorong + gayatarik)/10;
- var vy:Number = 0;
- var intID = setInterval(moveMe,30);
- function moveMe(){
- vy += ay;
- balon_mc._y += vy;
- }
Gravitasi
Gaya tarik gravitasi antara 2 objek dapat dihitung dengan rumus:
F = G * m1 * m2 / r^2
F = gaya tarik
G = konstanta gravitasi
m1 = massa objek 1
m2 = massa objek 2
r = jarak antara objek 1 dan 2
Dalam membuat aplikasi Flash, kadang kita perlu menyederhanakan rumus-rumus fisika. Rumus gravitasi di atas adalah salah satu diantara rumus-rumus yang perlu disederhanakan.
Kita nggak perlu menggunakan konstanta gravitasi beneran. Kita anggap saja nilainya adalah 1. Jadi rumus gravitasi dalam Flash adalah
F = m1 * m2 / r^2
Contoh penerapannya ada dalam Flash demo berjudul “Particle Attractor” yang saya buat beberapa waktu yg lalu dan bisa Anda lihat di sini
Friksi
Sederhananya, friksi adalah besaran yang berlawanan arah dengan kecepatan. Friksi mengakibatkan kecepatan sebuah objek berkurang. Rumusnya adalah:
F = u * m * g
F = friksi
u = konstanta friksi
m = massa
g = percepatan gravitasi
Dengan melakukan substitusi sisi kiri persamaan dengan rumus Hukum Newton Kedua kita dapatkan:
m * a = u * m * g
a = u * g
Implementasi Friksi dengan ActionScript dapat Anda lakukan dengan 2 langkah dasar yaitu :
- Hitung akselerasi berdasarkan konstanta u dan g (yang Anda tentukan sendiri)
- Jumlahkan akselerasi dengan kelajuan objek
Contohnya sebagai berikut:
- var vx:Number = 10;
- var g:Number = 2;
- var u:Number = 0.2;
- a = u*g;
- var intID:Number = setInterval(moveMe, 30);
- function moveMe() {
- if (vx>0) {
- vx -= a;
- } else {
- vx = 0;
- }
- ball_mc._x += vx;
- }
Cara di atas dapat disederhanakan lagi (dan ini cara yang paling gampang) yaitu dengan mengalikan kecepatan dengan sebuah konstanta yang nilainya antara 0 dan 1. Contoh di atas dapat kita ubah menjadi :
- var vx:Number = 10;
- var k:Number = 0.85;
- var intID:Number = setInterval(moveMe, 30);
- function moveMe() {
- vx *= k;
- ball_mc._x += vx;
- }
Jika k bernilai 1, maka kecepatannya tetap. Jika 0, objek berhenti.
Akhirnya …
Seperti yang Anda lihat, penerapan hukum-hukum Fisika untuk menghasilkan animasi yang realistis relatif gampang. Hanya perlu sedikit pengetahuan matematika dan logika serta improvisasi. Ingat, untuk mendapatkan hasil yang kita inginkan, tidak selamanya kita harus benar-benar mengikuti rumus Fisika yang ada. Seringkali diperlukan penyederhanaan, bahkan pengabaian beberapa variabel. Tentu saja ini akan membuat animasi sistem tidak akurat secara Fisika, tapi siapa peduli? Yang penting animasi kita cukup akurat secara visual.
Ok, sekian tutorial ini. Semoga bermanfaat. Amin.
Update – Ada kesalahan penterjemahan velocity & speed. Yang betul kelajuan = speed (skalar), kecepatan = velocity (vektor). Maklum bukan orang Fisika. Makasih untuk mas umar atas koreksinya.
Comments [32]
1. aNgus , 457 days ago #
Busyeett dah .. ini lagi kesurupan einstein apa lagi mabook yakk ,.,kok ngomongin “bener bener” ttg fisika .. wah wah wah
2. b4yu4d4 , 457 days ago #
mas sekali lagi trims buanget atas tutornya…mudah2an ilmunya bermanfaat bwat smua orang yg lagi kesusaha seperti saya sendiri…
lain kali klo aq udah mentokkkk..tokkk..tokk.. bolehkan minta tlg lagi…?tapi saya akan berusaha terlebih dahulu!!sekali lagi thumbs up bwat mas ab
3. sandymc , 456 days ago #
ini baru namanya pahlawan tanpa tanda jasa :). Terima Kasih banyak buat ilmunya.
4. Hidjrah Saputra , 456 days ago #
Saya membuat Aplikasi dengan Flash, tapi ketika di exsport (dipublish) iconnya kok masih icon dengan huruf flash “f”, klo mau ngubah gimana ya carannya? tanks
5. Aravir , 455 days ago #
Keren, hanya jangan dicoba pada gerak bolak balik (mis: bandul, pegas) hasilnya bisa super kacau (terjadi pada skripsiku). Ini diakibatkan error/galat/ralat pada flash sangat sangat sangat besar, tidak seperti pada Delphi.
btw, pada skrip diatas kita bisa menambahkan parameter dt(untuk waktu), jadi kita tidak mengandalkan kecepatan frame untuk variabel waktunya.
6. Anggie Bratadinata (author) , 455 days ago #
@all :
thanks atas komentarnya
@aravir:
Tutorial di atas udah pake waktu ( setInterval() ) jadi nggak tergantung fps.
Mau tau gerak bolak-balik? Tunggu tutorial gw tentang Springing (pegas) :-).
7. aNgus , 454 days ago #
gimana kalau awakmu beli buku fisika misal kelas 1 SMA ,terus semua teorinya kamu bikin flash. setelah itu kamu bilang ke Diknas, aplikasi alat bantu pelajaran SMA kelas 1. begitu juga untuk kelas 2 dan 3…. atau kalau diknas nolak selain taruh di blog mu, kasih juga ke pihak -pihak tertentu,.... koncomu kan uaakeh seng kenal di diknas. di percetakan ..kenal di media .. kenal ama orang TI terkenal ..kenal pejabat pejabat tinggi …(celingak celinguk … takut di gebuk konco2mu.. kekekeke)
setalah berhasil di buku SMA, dilanjutkan ke buku jurusan fisika, sapa tau kamu dapat title sarjana di fisika atau mungkin doktor… hehehehe piisssss
8. anggie bratadinata (author) , 454 days ago #
@aNgus:
Heheh … boleh juga idenya, Gus. Gimana kl lu yg jualin, nanti kita bagi hasil :-)
9. missPhu , 453 days ago #
HEBAT !!
10. Hendyyyyyy , 452 days ago #
kk!
minta cara wat bikin box comment kayak gini donk!
buat personal website niiii^^
plisssssssssssss
plisssssss
oc2?
thx kk^^
11. Hendyyyyyy , 452 days ago #
kk, minta fs yap^^
alw4yscoc4col4@yahoo.com
12. the trondholz , 451 days ago #
cobaaa dri dulu ada ginian waktu gw SMA, pasti gw jd kesayangan guru2…tp gpp lah , itung2 anak aku ntar tak tunjukin punya mas anggi biar g ancur kyk bapaknya…keep the good job man…
13. abcd , 451 days ago #
HIkzz Gw Suka Flash Tapi GA suka Mat of Fisika..>!!
Jd GW Males Cium BAu Rumus :p
14. juni , 447 days ago #
ass.
bisa minta tolong cariin apa defenisi kecepatan terminal????
trim’s untuk siapapun yang mau membantu. moga Allah membalaskebaikan anda
15. umar , 443 days ago #
Di buku fisika sejauh yang aku baca, kecepatan=velocity dan kelajuan=speed. Kecepatan adalah vektor dan kelajuan adalah skalar. Beneran begitu kan?
16. anggie bratadinata (author) , 443 days ago #
@umar : ya, sampean betul. Kecepatan = velocity, kelajuan = speed. Artikel sudah diperbaiki. Trims.
17. Joel-ex , 442 days ago #
he….he…he…. hebat mas….rumusnya lengkap dengan peng-aplikasian di Flash menggunakan Action Script…. saya juga baru belajar buat modul pembelajaran fisika menggunakan Flash…karena setahu coba2 saya tidak semua rumus yang di fisika bisa di terapkan langsung dalam action script….
Blog yang mantap…. :)
18. ayu , 433 days ago #
wah mas anggie hebat euy….aq wktu smk (STM jd fisika ma matnya teknik) ko g kepikiran bwt nerapin d as flash ya.padahal aq nak mm yg pegangannya flash….
btw,gmn c biar qt bisa scr spontan kepikiran nerapin ilmu buat apa aja…termasuk flash.gampangnya c, aq tau ilmunya g tau kegunaannya…org berilmu yg tak berguna hehehehe…...
19. axer , 432 days ago #
MAS....
JGN PELIT 2 NGASIH RUMUS HUKUM NEWTON DONK!!!
THANK’S
20. gmie , 432 days ago #
g mana sih caranya pinter fisika ?
21. helga , 383 days ago #
baGuuuuuuuuuuuus……..
22. emma , 374 days ago #
kak, boleh minta ringkasin “hukum2 newton tentang gerak dan gravitasi” gak? soalx ada tugas nich!!! tolong kirimin ya kak!! biar aku ngerti, plus rumus-rumus nya. arigatoo gozaimasu dech atas kirimannya!!
23. introzip , 374 days ago #
Tq, Bro. Gua lagi cari kamera digital yang fps nya gede.
Gua lupa rumus fisika nya ngitung frame (fps), untung aja ada website ini.
24. putut , 352 days ago #
tuink… tuink.. :(((*&*%* pusing ne..
btw, makasih banget, ada yang laen ttg fisika, (aQ lagi ngembangin fisika dnegan animasi)
kalo ada info lwt email ya!! thanks b4
25. maria , 347 days ago #
kak,gmn sich carax sk pljrn fisika?cz bgq fska tu slt bgt
26. CLICK HERE , 339 days ago #
wah bagus banget nih, bagi2 pengetahuan..makacihh//…
27. boim , 252 days ago #
“wah, lumayan. rumus2 fisika dijadiin animasi. Kereeennn…!”
28. eva , 249 days ago #
gymana beljar fisika supaya gampang? thx rumusnya membantu…
29. DEWI PAWESTRI A. , 212 days ago #
bisa beri tutorial rumus2 fisika?
30. Donie , 208 days ago #
mas ilmu yang mas berikan sudah baik..namun alangkah lebih baiknya jika rumus tersebut juga diberi contoh soalnya..terimakasih
31. Rifan , 205 days ago #
kreatif dan inovatif banget… gw dukung 100 percen, biar lebih lengkap bahas yang laen juga. klo perlu bantuan hubungin gw aja…
32. rudyhilkya , 120 days ago #
belum pernah terpikirkan oleh saya apa yang anda kemukakan … menarik, interesting
ayo kumpulkan lagi pengetahuan
mohon ijin untuk menautkan situs anda ini … sangat bermanfaat
terima kasih sudah mau berbagi
Commenting is closed for this article.