Nugroho's blog.

Saturday, November 7, 2009

Simulasi Gerak Vertikal di Flash

Software yang dibuat dengan Flash ini mensimulasikan gerak vertikal dengan nilai awal kecepatan dan posisi yang dapat diubah-ubah oleh pengguna. Pengguna bisa memasukan berbagai nilai ketinggian dan kecepatan awal ke atas maupun ke bawah, atau tanpa kecepatan awal sama sekali (gerak jatuh bebas)

From Aravir (am I Physicist?)


Pada simulasi ini, rumus yang dipakai adalah:

g=10
v=v+g*dt
h=y+v*dt
(metode tersebut dinamakan metode Euler)

Nilai awal yang dibutuhkan adalah v dan h.

v adalah kecepatan awal benda; benda bisa dilempar ke atas (v positif) maupun ke bawah (v negatif)

h adalah ketinggian benda dari titik acuan (tanah).

Langkah-langkahnya adalah:
Buat document Flash baru
Buat objek
Convert objek menjadi movie
Pada instance, beri nama “bola”
Buat dua text input, pada instance masing-masing, beri nama kecepatan dan posisi
Buat tombol, pada instance, beri nama tombol
Klik frame pertama; pada jendela action ketikkan perintah berikut

kecepatan.text = 0;
posisi.text = 200;
acuan = 300;
t = 0;
dt = 0.01;
g = -10;
v = Number(kecepatan.text);
h = Number(posisi.text);
jalan = false;
bola._y = acuan-h;
_root.onEnterFrame = function() {
if (jalan == false) {
h = Number(posisi.text);
bola._y = acuan-h;
v = Number(kecepatan.text);
}
if (jalan == true) {
v = v+g*dt;
h = h+v*dt;
kecepatan.text = v;
posisi.text = h;
bola._y = acuan-h;
t+=dt;
waktu.text=t;
if (h<=0) { jalan = false; } } }; tombol.onRelease = function() { jalan = not (jalan); }; Untuk menjalankan program, tekan ctrl-enter Simulasi dapat langsung dijalankan dengan menekan tombol atau sebelum dijalankan, mengubah nilai-nilai awal. Kecepatan awal bisa diberikan, positif untuk kecepatan awal ke atas dan negatif untuk ke bawah). Posisi juga bisa diubah. Saat simulasi berjalan, posisi dan kecepatan tidak dapat kita ubah. Simulasi berhenti saat benda mencapai tanah (h=0) atau dapat kita hentikan dengan enekan tombol. Saat simulasi berhenti, kita dapat mengubah nilai posisi dan kecepatan kembali. Gambar-gambar Gambar. 1
From Aravir (am I Physicist?)


Gambar. 2

From Aravir (am I Physicist?)


Gambar. 3

From Aravir (am I Physicist?)


Gambar.4
From Aravir (am I Physicist?)


Gambar. 5

From Aravir (am I Physicist?)

Thursday, October 29, 2009

Tuesday, September 15, 2009

Sensor Gerak di MacBook Pro menggunakan Python dan AMSTracker

Sebuah diary dari album foto Facebook saya:

Software ini dibuat pada jumat pon malam sabtu wage 28-8-'09 dengan menggunakan bahasa Python setelah menyadari bahwa Macbook ku ternyata memiliki accelerometer, sebuah sensor gerak.

Software ini mensimulasikan bola-bola yang berserakan di lantai (bisa memantul) yang pergerakannya ditentukan oleh kemiringan bidang lantai. Kemiringan lantai ini diatur dengan memiringkan laptop. Detilnya agak mengerikan, tapi toh hasilnya lumayan.


Pertama menjalankan software ini kupikir ada yang salah, kok bolanya menggelinding ke kanan terus, ternyata mejaku yang miring, hei... software ini bisa buat waterpass lho.


From Aravir (am I Physicist?)

Salah satu sensor di laptop Apple merupakan sensor arah gravitasi atau sensor gerakan laptop atau sensor kemiringan. Semacam mendeteksi bidang horizontal. Aku belum menemukan cara langsung mengaksesnya tetapi ada AMSTracker yang bisa menampilkan output yang akan dipakai python untuk menentukan gerakan laptop.

Perintah untuk mengakses output sensor adalah sebagai berikut:
From Aravir (am I Physicist?)

Aku masih bingung, outputnya 3, kuanggap x, y, z. Mungkin masih ada output yang lain , tapi belum tahu cara mengetahuinya
-kalo laptop kumiringkan kiri-kanan, yang berubah x
-kalo laptop kumiringkan depan-belakang, yang berubah z
-yang y konstan menunjuk angka -1, gak tahu kenapa
Kayaknya aslinya memang sensor gravitasi, tujuan utamanya mendeteksi gerakan laptop; jika jatuh (gravitasi 0), maka harddisk otomatis berhenti.
Untuk memudahkan menjalankan software, AMSTracker dan file script python sebaiknya diletakkan di folder yang sama.



Cara menjalankannya adalah melalui perintah di console:
From Aravir (am I Physicist?)



atau buat sebuah file text berekstensi .sh yang berisi:
cd "`dirname "$0"`"
./AMSTracker -u 0.001 -s | python sensorGravitasi.py
Simpan di folder yang sama, dobelklik file tersebut untuk menjalankan software
hasilnya:


From Aravir (am I Physicist?)


From Aravir (am I Physicist?)


From Aravir (am I Physicist?)


From Aravir (am I Physicist?)



From Aravir (am I Physicist?)


From Aravir (am I Physicist?)

list perintah seluruhnya sebagai berikut:

#awal list program, simpan dengan nama sensorGravitasi.py#
###############
#sensor gerak
#oleh Nugroho Adi P
#bahasa: python
#
#########
import sys, os
from visual import *
from random import uniform
from visual.controls import *
scene.x=125
jumlah=19
a=vector(0,-10,0)
e=0.75
dt=0.01
s=17
b=-11
def change():
for bola in lbola:
bola.v=vector(0,uniform(0,23),0)
################
c = controls(title='Tombol-tombol', x=0,
y=0, width=100, height=300, range=200) # Create controls window
# Create a button in the controls window:
bt = toggle( pos=(0,0), width=77, height=30, text1='Jalan',
text0='Stop' )
br = button( pos=(0,100), width=77, height=30, text='Acak',
action=lambda: change())
################
box(pos=(0,b-0.5,0), height=1,length=37, width=37)
lbola=[]
for i in arange(jumlah):
bola=sphere(color=color.green)
bola.pos=vector(uniform(-s,s),uniform(-7,19),uniform(-s,s))
bola.v=vector(0,0,0)
bola.radius=uniform(1,2)
lbola.append(bola)
while 1:
c.interact()
#rate(97)
try:
line = sys.stdin.readline()
x = int(line.split()[0])
y = int(line.split()[1])
z = int(line.split()[2])
#print x, ' ',y,' ',z
except KeyboardInterrupt:
sys.exit(0)
except:
pass
if (bt.value==1):
for bola in lbola:
if bola.y-bola.radius>b:
a=vector(-x/5,-10,z/5)
bola.v=bola.v+a*dt
bola.pos=bola.pos+bola.v*dt
#tumbukan dengan lantai
if bola.y-bola.radius<=b:
bola.v.y=-bola.v.y*e
bola.pos.y=b+bola.radius+0.1
#tumbukan dengan dinding
if bola.x+bola.radius>=s:
bola.v.x=-bola.v.x*e
bola.pos.x=s-bola.radius-0.1
if bola.x-bola.radius<=-s:
bola.v.x=-bola.v.x*e
bola.pos.x=-s+bola.radius+0.1
if bola.z+bola.radius>=s:
bola.v.z=-bola.v.z*e
bola.pos.z=s-bola.radius-0.1
if bola.z-bola.radius<=-s:
bola.v.z=-bola.v.z*e
bola.pos.z=-s+bola.radius+0.1
###deteksi tumbukan antar bola
for i in arange(jumlah):
for j in arange(i+1,jumlah):
jarak=mag(lbola[i].pos-lbola[j].pos)
if jarak<(lbola[i].radius+lbola[j].radius):
arah=norm(lbola[j].pos-lbola[i].pos)
vi=dot(lbola[i].v,arah)
vj=dot(lbola[j].v,arah)
tukar=vj-vi
lbola[i].v=lbola[i].v+tukar*arah
lbola[j].v=lbola[j].v-tukar*arah
pantul=lbola[i].radius+lbola[j].radius-jarak
lbola[i].pos=lbola[i].pos-pantul*arah
lbola[j].pos=lbola[j].pos+pantul*arah
#####akhir list program###

Membaca File Excel di Python

Membaca File Excel Menggunakan Python


 


Artikel ini membahas cara membaca data Ms Office Excel (.xls) dari Python. Hal ini berguna untuk pengolahan data mentah dari Excel sebagai input untuk Python. Untuk keperluan ini, diperlukan modul bernama xlrd.


Kode program Python dalam artikel ini ditulis di dalam IDLE, sebuah kode editor, namun bisa ditulis di notepad, vi atau text editor yang lain.


 


From Aravir (am I Physicist?)

 


 




Kode programnya sebagai berikut:


#Program bacaExcel.py


#Nugroho AP


 


#mengiport modul xlrd


import xlrd





#membuat variabel bernama wb untuk membaca file Excel, 


#dalam contoh ini Runge-Kutta.xls


wb=xlrd.open_workbook("Runge-Kutta.xls")





#perintah untuk menampilkan jumlah dan nama-nama sheet


print "Jumlah sheet",wb.nsheets


print "Nama WorkSheet", wb.sheet_names()





#buat variabel sh untuk membaca sheet pertama


sh=wb.sheet_by_index(0)





#perintah untuk menampilkan nama sheet, jumlah baris dan kolom


print "Nama Sheet    = ", sh.name


print "Jumlah baris  =", sh.nrows


print "Jumlah kolom  =", sh.ncols





#perintah untuk menampilkan isi/nilai sel B11


print "Sel B11 berisi",sh.cell_value(rowx=10,colx=1)





#perintah untuk menampilkan semua baris pada kolom B dan C


for i in range(sh.nrows):


    print sh.cell_value(rowx=i,colx=1), "   ",sh.cell_value(rowx=i,colx=2) 


 


 


 


#tekan F5 untuk menjalankan program


 


From Aravir (am I Physicist?)

From Aravir (am I Physicist?)

Ket:


-Python membaca urutan kolom A,B,C sebagai 0,1,2 


-Baris 1,2,3,... dibaca 0,1,2,... oleh Python

Menyimpan file ke dalam Format Excel menggunakan Python

Artikel ini merupakan lanjutan dari Membaca File Excel menggunakan Python (Revised(Revised))



Kode Python berikut berisi metode Runge-Kutta orde-4 untuk menyelesaikan persamaan differensial orde dua, simulasi dan visualisasi hasil penyelesaian persamaan dan perintah untuk menyimpan hasil penyelesaian dalam format Ms Excel. Meski demikian, tidak dibutuhkan program Excel sama sekali untuk menjalankan kode tersebut. Persamaan yang diselesaikan dalam contoh ini adalah persamaan sistem pegas ideal.



Agar dapat menulis dan menyimpan menyimpan dalam format Excel, Python menggunakan modul pyExcelerator. Python juga memerlukan modul visual untuk menampilkan gambar. Kode lengkapnya adalah sebagai berikut.


From Aravir (am I Physicist?)










Keterangan Kode:



#memanggil modul


from visual import *


from pyExcelerator import *



#Nilai awal


t=0.


l=0


h=0.1


m=1.


k=1.


f=5.


y=4.


z=0.


tmax=27


g=[]



#membuat variabel wb untuk menampung worksheet


wb=Workbook()



#membuat worksheet baru dengan nama ws0


ws0=wb.add_sheet('0')



#membuat display


for i in range(2):


g.append(display(y = 30 + 300*i,


width=600, height=300,


range=(tmax/2,20,10),


center=(tmax/2,0,0),autoscale=0))



#memberi nama masing-masing display


g[0].title="Posisi terhadap waktu"


g[1].title="Kecepatan terhadap waktu"



#fungsi y"=-kx/m


c=-k/m



#membuat kurva di display 1 dan display 2


a=curve(color=color.green, radius=.1, display=g[0])


b=curve(color=color.blue, radius=.1, display=g[1])



#mengisi kolom A1 dengan ‘t’, kolom B1 dengan kecepatan


ws0.write(0,0,"t")


ws0.write(0,1,"Kecepatan")


ws0.write(0,2,"Posisi")


while (t<=tmax):


l=l+1



#ini adalah program algoritma Runge-Kutta orde-4


#y'=z


k1=c*y


k2=c*(y+h*k1/2)


k3=c*(y+h*k2/2)


k4=c*(y+h*k3)


z=z+h*(k1+k2+k3+k4)/6


#z'=y


k1=z


k2=z


k3=z


k4=z


y=y+h*(k1+k2+k3+k4)/6



#menampilkan gambar di display 1 dan display 2


a.append(pos=vector(t,y,0))


b.append(pos=vector(t,z,0))



#menulis nilai t di kolom A


ws0.write(l,0,"%.2f" % (t))



#menulis nilai kecepatan di kolom B


ws0.write(l,1,"%.4f" % (z))



#menulis nilai kecepatan di kolom C


ws0.write(l,2,"%.5f" % (y))



t=t+h



#menyimpan worksheet dengan nama Runge-Kutta.xls


wb.save('Runge-Kutta.xls')



Hasilnya adalah sebagai berikut.


From Aravir (am I Physicist?)

From Aravir (am I Physicist?)

From Aravir (am I Physicist?)

From Aravir (am I Physicist?)

From Aravir (am I Physicist?)



Shape Tween di Flash

Shape Tween adalah fitur di Flash yang memungkinkan untuk mengubah suatu bentuk menjadi bentuk yang lain. Dengan Shape Tween kita bisa membuat animasi lingkaran menjadi kotak atau bentuk yang lain.


From Aravir (am I Physicist?)

Langkah pertama, buat Flash Document baru.



buat gambar kotak

From Aravir (am I Physicist?)



Klik-kanan frame 10, pilih Insert KeyFrame

From Aravir (am I Physicist?)


Hapus (tekan tombol del, tentu saja :) ), anda akan mendapati frame 10 menjadi kosong

From Aravir (am I Physicist?)

buat gambar elips (atau lingkaran)

From Aravir (am I Physicist?)

klik frame diantara frame 1 dan frame 10

From Aravir (am I Physicist?)

Pada properties, pilih Tween Shape

From Aravir (am I Physicist?)




jalankan dengan menekan ctrl-Enter

From Aravir (am I Physicist?)


Anda bisa mengubah bentuk pada frame 10 sesuka hati, bahkan anda dapat mengganti warna dan menggabungkan benda dengan berbagai macam warna pada frame 10

From Aravir (am I Physicist?)
From Aravir (am I Physicist?)
From Aravir (am I Physicist?)

Motion Tween di Flash

 

Artikel ini membahas tentang pembuatan animasi di Flash dengan fitur Motion Tween dimiliki Flash. Dengan fitur tersebut, kita dapat dengan mudah membuat animasi gerak-gerak dalam fisika, misal animasi gerak lurus beraturan dan animasi katrol. Kelemahan dari fitur ini adalah kita sulit mengatur kecepatan gerak benda-benda sedemikian sehingga memenuhi hukum fisika karena di sini kita mengatur kecepatan, percepatan dan arah secara manual. Walaupun demikian, sebagai ilustrasi, fitur ini tetap perlu dipelajari.

 

Langkah pertama, tentu saja, buat Flash Document baru.

 

From Aravir (am I Physicist?)


Buat bentuk lingkaran
>pilih oval tool>buat lingkaran

From Aravir (am I Physicist?)

From Aravir (am I Physicist?)

Untuk animasi
Klik kanan frame 10> pilih Insert Keyframe
From Aravir (am I Physicist?)

Klik kanan salah satu frame diantara frame 1 dan 10> pilih create motion tween

From Aravir (am I Physicist?)

Klik frame 10> drag bola sesuka hati
From Aravir (am I Physicist?)

Jalankan animasi dengan menekan Ctrl-Enter


Lebih lanjut

Klik frame diantara frame 1 dan 10> Jangan takut kalau lingkaran tidak berada pada tempatnya> Pindahkan posisi lingkaran sesuka hati
jalankan dengan menekan Ctrl-Enter

From Aravir (am I Physicist?)

From Aravir (am I Physicist?)

Anda akan melihat animasi telah berubah, anda bisa melakukannya di frame lain. Jika dirasa animasi kurang panjang, pada langkah Insert Keyframe di atas, pilih frame lain yang lebih besar (misal frame 20).
323f (5) amp (1) android (12) apple (7) arduino (18) art (1) assembler (21) astina (4) ATTiny (23) blackberry (4) camera (3) canon (2) cerita (2) computer (106) crazyness (11) debian (1) delphi (39) diary (286) flash (8) fortran (6) freebsd (6) google apps script (8) guitar (2) HTML5 (10) IFTTT (7) Instagram (7) internet (12) iOS (5) iPad (6) iPhone (5) java (1) javascript (1) keynote (2) LaTeX (6) lazarus (1) linux (29) lion (15) mac (28) macbook air (8) macbook pro (3) macOS (1) Math (3) mathematica (1) maverick (6) mazda (4) microcontroler (35) mountain lion (2) music (37) netbook (1) nugnux (6) os x (36) php (1) Physicist (29) Picture (3) programming (189) Python (109) S2 (13) software (7) Soliloquy (125) Ubuntu (5) unix (4) Video (8) wayang (3) yosemite (3)