Friday, May 6, 2016

Ball Oscillation Inside a Sphere

 with Visual Python.

 I use nonlinear solution, :)


#code
from visual import *
from random import uniform,random
from visual.controls import *

display(center=(0,0,0),background=(1,1,1), #autoscale=False,        
        width=600, height=600,  forward=(-0.4,-0.3,-1)) #arah kamera

distant_light(direction=(1,1,1), color=color.red)

dl  = .01
l   = 1.1

box(color=color.white, pos=(0,0,0),length=2*l,height=dl, width=dl, opacity=.3)
box(color=color.white, pos=(0,0,0),length=dl,height=2*l, width=dl, opacity=.3)
box(color=color.white, pos=(0,0,0),length=dl,height=dl, width=2*l, opacity=.3)


bola1 = sphere (pos=(0,0,0), radius=1.1, color=color.green, opacity=.3)
bola = sphere (pos=(1,0,0), radius=.1, color=color.red)

r   = 1.
x   = 1.
m   = 1.
g   = 1.
vx  = 0.
dt  = 1./16.
def proses():
    global x,vx
    f   = -m*g*x/r
    a   = f/m
    vx  += a*dt
    x   += vx*dt
    r2  = r*r
    x2  = x*x
    if x2>r2:
        x2 = r2
    y   = r-sqrt(r2-x2)
    bola.x  = x
    print x
    bola.y  = y-r
    
while 1:
    rate (19)
    proses()
    
    
    
    

    

.