Sudah lama tidak otak-atik Macromedia Flash.
Yup, masih yang Macromedia, bukan Adobe, :) .
Membuat animasi bola bermuatan (atau elektron) yang bergerak lurus dengan kecepatan konstan tiba-tiba mencapai daerah dengan medan magnet. Sesuai hukum Lorentz maka bola/elektron akan bergerak melengkung.
Action script hanya ditulis pada action di frame pertama layer background.
px0 = bola._x; py0 = bola._y; awal(); _root.onEnterFrame = function() { if (jalan == true) { proses(); } //trace(jalan) }; function awal() { jalan = false; bola._x = px0; bola._y = py0; q = 1; B = 1; tB.text = B; //massa m = 1; tm.text = m; //kecepatan vx = 50; vy = -10; tvx.text = vx; tvy.text = vy; //percepatan ax = 0; ay = 0; //posisi px = 0; py = 0; dt = 1/8; } function bacaInput() { vx = Number(tvx.text); vy = Number(tvy.text); m = Number(tm.text); B = Number(tB.text); } function updateNilai() { tB.text = B; tm.text = m; tvx.text = vx; tvy.text = vy; } function proses() { v = Math.sqrt(vx*vx+vy*vy); if (bola._x>200) { F = B*q*v; } else { F = 0; } a = F/m; //arah vektor normal v nvx = vx/v; nvy = vy/v; /*arah vektor percepatan karena vektor yang tegak lurus a=(ax,ay) adalah at=(-ay,ax) */ nax = -nvy; nay = nvx; ax = a*nax; ay = a*nay; //hitung kecepatan baru vx += ax*dt; vy += ay*dt; px += vx*dt; py -= vy*dt; trace(F); //update posisi bola bola._x = px0+px; bola._y = py0+py; updateNilai(); } //tombol-tombol //tombol tbJalan tbJalan.onRelease = function() { bacaInput(); jalan = true; }; tbStop.onRelease = function() { jalan = false; }; tbReset.onRelease = function() { awal(); };
.
So much faster than matplotlib 3d projection
from visual import * from random import uniform display(center=(0,0,0), #pusat display background=(1,1,1), #autoscale=False, #agar display tidak otomatis mengikuti obyek width=600, height=600, forward=(-0.4,-0.3,-1)) #arah kamera x = 1. y = 1. z = 1. dt = 1./64. s = 10. b = 8./3. r = 28 w = 0. dw = 0.01 n = 0 while 1: rate(1) while n<3000: n += 1 xdot = s * (y-x) ydot = x*r -x*z -y zdot = x*y -b*z x = x+xdot*dt y = y+ydot*dt z = z+zdot*dt w +=dw if w>1 or w<0: dw = -dw sphere(pos=(x,y,z),radius=.7,color=(0.,w,0))
Alfa suka roti bakar "tesoberry" buatan ibuknya atau buatanku (yang hampir pasti selalu gosong, :) ).
Kadang dia ingin rasa lain.
Beberapa hari sekali minta roti bakar keju dan "yang coklat untuk adek". Beta memang suka coklat.
Jadilah, jika di pagi hari dia pesan sewaktu saya akan berangkat ngampus (saat dia kuantar ke rumah budhe), maka pulang harus bawa roti bakar bandung rasa coklat dan keju terpisah buat mereka.
Awalnya saya langganan beli roti bakar di pertigaan yang lumayan dekat dengan rumah. Langganan, yeah, karena di situ selalu sepi, jarang sekali ngantri.
Ternyata juga jarang sekali penjualnya ada meski dagangannya ada, entah kenapa.
Ehm, sepi, ternyata itu. Tetap saja kadang saya rela menunggu lima belas menit untuk orangnya datang. Pulang ke rumah dengan tangan kosong bukan pilihan yang bagus, meski Alfa Beta terkadang juga tidak protes.
Mengajari mereka menepati janji dengan contoh nyata, :)
Cari cara agar mereka jadi enak untuk dilihat.
Di kode sebelumnya, bola sudah dicegah agar tidak melarikan diri dengan menambahkan kotak, mereka akan memantul jika menabrak kotak.
Beres, sekarang tambahkan interaksi antar bola, interaksi sederhana, gravitasi.
Ok, pake metode brutal, untuk tiap-tiap bola, hitung satu-satu interaksi gravitasi dengan seluruh bola, kemudian jumlahkan.