Nugroho's blog.

Friday, April 15, 2016

Bermain dengan Gaya Sentral di Python.


 Merangkak dari kode sebelumnya, dengan tambahan kotak yang mengungkung bola-bola yang mengitari titik asal dengan berbagai kecepatan. Bola-bola tersebut tak bisa menembus kotak, jika menabrak salah satu dinding kotak, maka dia akan memantul


from visual import *
from random import uniform,random

l = 17.
dl = .01
display(center=(0,0,0),background=(1,1,1),autoscale=False, width=600, height=600,forward=(-0.7,-0.7,-1))
distant_light(direction=(1,1,1), color=color.red)

box(color=color.white, pos=(0,l/2,0),length=l,height=dl, width=l, opacity=0.3)
box(color=color.white, pos=(0,-l/2,0),length=l,height=dl, width=l, opacity=0.3)
box(color=color.white, pos=(l/2,0,0),length=dl,height=l, width=l, opacity=0.3)
box(color=color.white, pos=(-l/2,0,0),length=dl,height=l, width=l, opacity=0.3)
box(color=color.white, pos=(0,0,l/2),length=l,height=l, width=dl, opacity=0.3)

bola = []
n = 11

G = 31.
for i in range(n):
ball = sphere (pos=(uniform(1,7),0,uniform(-7,7)), radius=.3, color=(random(),random(),random()))
ball.v = vector(0,uniform(1,3),0)

bola.append(ball)


dt = 1./32.
bola[0].pos=(1,1,1)
while 1:
rate (100)
for i in arange(n):
r = bola[i].pos
v = bola[i].v
jarak = mag(bola[i].pos)
arah = -norm(bola[i].pos)
gaya = G*1./(pow(jarak,2)+.1)*arah
a = gaya
v += a*dt
r += v*dt
#cek pantul ke tembok
if bola[i].x > l/2.:
bola[i].x = l/2.
v.x *= -1
elif bola[i].x < -l/2.:
bola[i].x = -l/2.
v.x *= -1
elif bola[i].y > l/2.:
bola[i].y = l/2.
v.y *= -1
if bola[i].y < -l/2.:
bola[i].y = -l/2.
v.y *= -1
if bola[i].z > l/2.:
bola[i].z = l/2.
v.z *= -1
if bola[i].z < -l/2.:
bola[i].z = -l/2.
v.z *= -1

bola[i].pos = r


.


Thursday, April 14, 2016

Playing with Central Force in Pyton with Visual Module


 I don't use n body calculation, every sphere only attracted by force from origin, dependent upon its position.

from visual import *
from random import uniform,random

l = 17.
dl = .01
display(center=(0,0,0),background=(1,1,1),autoscale=False, width=600, height=600,forward=(-0.4,-0.3,-1))
distant_light(direction=(1,1,1), color=color.red)
box(color=color.white, pos=(0,0,0),length=l,height=dl, width=l, opacity=0.3)
box(color=color.white, pos=(0,0,0),length=dl,height=l, width=l, opacity=0.3)
box(color=color.white, pos=(0,0,0),length=l,height=l, width=dl, opacity=0.3)

bola = []
n = 11

G = 31.
for i in range(n):
ball = sphere (pos=(uniform(1,7),0,uniform(-7,7)), radius=.3, color=(random(),random(),random()))
ball.v = vector(0,uniform(1,3),0)

bola.append(ball)


dt = 1./32.
bola[0].pos=(1,1,1)
while 1:
rate (100)
for i in arange(n):
r = bola[i].pos
v = bola[i].v
jarak = mag(bola[i].pos)
arah = -norm(bola[i].pos)
gaya = G*1./(pow(jarak,2)+.1)*arah
a = gaya
v += a*dt
r += v*dt

bola[i].pos = r


.





Wave Simulation Using Visual Python.


 I used previous code (with matplotlib animation).

 Removed the matplotlib part, swap it with vpython, :)



"""
Gelombang
"""
import numpy as np #untuk operasi array
from visual import *

#variabel
n = 39
x = np.arange(0., 1.,1./n ) #array dari 0 s.d 1 berjarak 1/n
y = np.zeros(n) #array sejumlah n isinya 0
y1 = np.zeros(n) # y1 : array [0..n] of real
y2 = np.zeros(n)
y1 = np.exp(-1*np.power(10*x-3,2))
y2 = np.exp(-1*np.power(10*x-3,2))

r2 = 1./512

display(center=(.5,0,0),background=(1,1,1))
#kotak
dindingKiri = box (pos=(0.,0,0), length=.01, height=1, width=1, color=color.green)
dindingKanan = box (pos=(1.,0,0), length=.01, height=1, width=1, color=color.blue)
bola = []
for i in range(n):
ball = sphere (pos=(x[i],y2[i],0), radius=.01, color=color.red)
bola.append(ball)

#nilai awal fungsi gaussian

#print y2


def proses():
#hitung nilai baru
for i in np.arange(1,n-1):
y[i] = 2*(1-r2)*y1[i]-y2[i]+r2*(y1[i+1]+y1[i-1])
#geser
y2[:] = y1[:]
y1[:] = y[:]
#print y2

return y2

while 1:
rate(100)
proses()
for i in np.arange(n):
bola[i].y = y2[i]


.



                          

Wednesday, April 13, 2016

Hello (Again) Visual Python, :D .


Menyapa kembali mainan lama, :)


from visual import *

floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)
bola = []
n = 2
for i in range(n):
ball = sphere (pos=(0,4,0), radius=1, color=color.red)
ball.v = vector(0,-1,0)

bola.append(ball)

dt = 0.01
bola[1].pos=(1,1,1)
while 1:
rate (100)
bola[0].pos = bola[0].pos + bola[0].v*dt
if bola[0].y < bola[0].radius:
bola[0].v.y = abs(bola[0].v.y)
else:
bola[0].v.y = bola[0].v.y - 9.8*dt

.

 


Lorenz Attractor 3D Scatter Plot using Python with Matplotlib


 After failed with regular plot() syntax, I have luck with the scatter() one, :)

"""
Cluster
"""
import numpy as np #untuk operasi array
import matplotlib.pyplot as plt #untuk gambar grafik
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation #untuk menggerakkan grafik
from itertools import cycle
randColor = cycle('bgrcmk').next
randMarker= cycle('.,ov^<>12348sp*hH+xDd|_').next

#fig, ax = plt.subplots()
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')

x = 1.
y = 1.
z = 1.

ax.scatter(x, y, z )

def animate(i):
global x,y,z,n

dt = 1./64.
s = 10.
b = 8./3.
r = 28



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


ax.scatter(x,y,z, c=randColor(), marker=randMarker())

ani = animation.FuncAnimation(fig, animate, frames=2000, interval=10, blit=False)
#ani.save('LorenzAtrractor3D.mp4',bitrate=1024)
plt.show()




.

 






Tuesday, April 12, 2016

Lorenz Attractor in Python with Matplotlib.

 Using three mapping.



import numpy as np                          #untuk operasi array
import matplotlib.pyplot as plt #untuk gambar grafik
import matplotlib.animation as animation #untuk menggerakkan grafik

fig, (ax, ay, az) = plt.subplots(3,sharex=True)

x = 1.
y = 1.
z = 1.
#plt.ylim(-43,43)
#plt.xlim(-43,43)

#membuat garis/kurva dengan sumbu-x adalah x, sumbu-y adalah y
line, = ax.plot(x, y, 'o' )
line, = ay.plot(x, z, 'o' )
line, = az.plot(y, z, 'o' )

def animate(i):
global x,y,z


dt = 1./64.
s = 10.
b = 8./3.
r = 28

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

plt.figure(1)

line, = ax.plot(x, y, 'o' )
line, = ay.plot(x, z, 'o' )
line, = az.plot(y, z, 'o' )

return line,

ani = animation.FuncAnimation(fig, animate, frames=2000, interval=100, blit=False)
#ani.save('Lorenz.mp4',bitrate=1024)
plt.show()



.




Inner beauty

 

 Kinanthi: Ada apa to Meg, kok nggremeng sendiri?

 Megatruh: Itu lo Kin, cewek ter-hot di kelas kita

 K: Makasih

 M: Bukan kamu!

K: Oh. Ya sudah, teruskan ngedumelnya.

M: Dasar...

K: Memang dia kenapa?

M: Kayaknya dia gonta-ganti pakaian baru seminggu sekali. 

K: Lha ya biar to.

M: Iya sih. Tapi sepatu dan tas dia juga banyak. Warnanya disesuaikan dengan baju yang dia kenakan.

K: Tumben kamu perhatian?

M: Jam tangannya juga gonta-ganti sewarna baju

K: Kamu naksir dia?

M: Eh, apa? Oh, ndak kok

K: Kubilang  ke dia ya?

M: Walah, nggak, awas...

K: Hihihi, lagian pasti ditolak mentah-mentah

M: Dasar

K: Dia cantik ya?

M: Tapi bukan tipeku

K: Jangan bilang kalo tipe cewek kesukaanmu itu kayak aku

M: Lha memang iya

K: Gak mau.

M: Eh?

K: Oh, kupikir kamu nembak aku

M: Jiah..., gak harus pacaran to? Lha kalo tiap ketemu cewek tipe kesukaanku trus kutembak lak jadi gawat.

K: Hihihi. Memang aku kenapa? Apa beda sama dia. 

M: Natural

K: Itu pujian? Atau kata halus dari jarang pake bedak?

M: Huh, sadar diri ternyata. Yup dua-duanya.

K: Memang kenapa dengan bedak?

M: Ya ndakpapa, asal gak kelewatan

K: Kelewatan gimana?

M: Lihat saja dia tuh. Bedak super tebal. 

K: Oh, lha kalau tebal kenapa? Kan jadi bagus tuh

M: Kalo bagus, kenapa kamu jarang pake? Malah kayak gak pernah, soalnya pas pake bedak pun super tipis.

K: Gak enak, gak nyaman

M: Tuh kan

K: Tapi kalo bagi dia nyaman kan gakpapa

M: Memang gakpapa. Tapi itu yang bikin dia menjadi kategori bukan tipeku

K: Eh? 

M: Warna aslinya gak kelihatan

K: Hm, baru kepikiran. Aku juga tidak tahu dia kalo tanpa makeup gimana

M: Kan? Kan?

K: Hmm

M: Kalo kamu kan sudah ketahuan kayak gimana, hehehe

K: Dasar.

M: Jadi gak perlu kaget misal aku ke tempatmu dan lihat kamu bangun tidur tanpa makeup.

K: Hihihi, jadi ingat Si Gendhis kemarin yang ngamuk-ngamuk di minimarket ke mbak cantik kasir karena diambilkan bedak "sewarna dengan warna kulit dia"

M: Lah?

K: Dia kan berjuang habis-habisan memutihkan kulitnya to Meg. Eh lha lok di-skak sama kasir, hahaha. 

M: Apa salahnya dengan kulit coklat?

K: Duh, kamu itu Meg, gak peka. Banyak cewek yang terobsesi kulit putih.

M: Lha tapi kan kalo pake bedak putih gitu, kan kadang leher gelapnya masih kelihatan

K: Woi, jangan ngomong gitu di depan Gendhis ya, please. 

M: Kenapa?

K: Gakpapa sih? Paling-paling kamu dilempar sepatu hak tinggi runcingnya.

M: Segitu sensitifnya

K: Kalo menyangkut penampilan, itu bagai hidup dan mati bagai dia.

M: Bah

K: Dulu gak ingat to? Dia bolos kuliah gara-gara lotionnya habis. Gak pede katanya kalo berangkat kuliah tanpa make up full power

M: Gak kayak kamu yang berangkat tanpa mandi pun santai saja

K: Hehehe.

M: Gak kasihan sama sebelahmu?

K: Kan seringnya kamu to? Gak. 

M: Dasar.

K: Lebih baik teman yang pingsan gara-gara aku gak mandi daripada mati karena gak pede tanpa make up.

M: ...

K: Yeah. Kecantikan dari dalam selalu nomor satu bagiku.

M: Lha kamu kan sudah putih dari sononya Kin.

K: Tapi aku gak keberatan tuk gelap. 

M: Itu yang membedakan kamu sama mereka. 

K: Kamu mau bilang aku cewek gak normal?

M: Iya, eh, bukan, eh, itu maksudku kamu gak sibuk dengan payung atau sisir atau cermin kecil. 

K: Oh

M: Sebel aku kalo dengar atau baca posting tentang inner beauty. Sementara sehari-harinya kalo pas bicara malah sibuk mengecek rambut atau wajah tiap beberapa detik sekali. Bukannya semua itu outer?

K:...


M: Lha kalo mengagung-agungkan kecantikan dari dalam, ngapain beli baju mahal, seminggu sekali gonta ganti tema untuk menunjukkan inner beauty

K: Kalo dia mampu kan gakpapa to Meg

M: Apapun pakaianmu kalo aslinya cantik ya cantik. 

K: Makasih

Meg: Gak akan ada pujian "wah kamu cantik kalo pake baju itu". Secara tersirat kan harus pake baju tertentu biar cantik, baku lain bikin dia jelek

K: Iya juga sih

Meg: Cukup "wah kamu cantik" 

Kin: Wow, aku tersanjung

Meg: (ambil kesempatan)...dan aku lapar

Kin: Yuk kita makan di Mc Dayat

Meg: kamu memang top Kin

****
Di Mc D, habis makan

Kin: (di kasir) sst..., mak Dayat, nulis bon dulu atas nama Megatruh ya, trims.

Meg: (asyik menandaskan sisa kopi) Sudah dibayar Kin? 

Kin: Yuk, jalan lagi...
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)