Nugroho's blog.: Collision.

## Thursday, June 2, 2016

### Collision.

Here's the Code
`#codefrom visual import *from random import uniformdisplay(center=(0,2,0),background=(1,1,1), autoscale=False, range=4.5,                width=600, height=600,  forward=(-.4,-.3,-1)) #arah kameradistant_light(direction=(1,1,1), color=color.red)Ball    = sphere(radius=2, length=4, opacity=.3)Bola    = []n       = 5for i in arange (n):    bola        = sphere(color=color.green,radius=uniform(.2,.73))    bola.pos    = vector(uniform(-1.5,1.5),uniform(-1.5,1.5),uniform(-1.5,1.5))    bola.v      = vector(uniform(-1,1),uniform(-1,1),uniform(-1,1))    Bola.append(bola)    dt          = 1./16def pantul():    global Bola    for bola in Bola:        r   = bola.pos        v   = bola.v        if mag(r)>=Ball.radius:            r   = 1.9*norm(r)            vp  = (dot(v,norm(r)))*norm(r)            vr  = v-vp            v   = vr - vp            bola.r  = r            bola.v  = v    for i in arange (n-1):        for j in range(i+1, n):            ri  = Bola[i].pos            rj  = Bola[j].pos            vi  = Bola[i].v            vj  = Bola[j].v            rc  = rj-ri            if Bola[i].radius+Bola[j].radius>mag(rc):                vpi = dot(vi,norm(rc))*norm(rc)                vri = vi-vpi                vpj = -dot(vj,norm(rc))*norm(rc)                vrj = vj-vpj                vi  = vpj+vri                vj  = vpi+vrj                Bola[i].v   = vi                Bola[i].v   = vjdef proses():    for bola in Bola:        r   = bola.pos        v   = bola.v        a   = vector(0,0,0)        v   += a*dt        r   += v*dt        bola.pos  = r    pantul()while 1:    rate(37)    proses()`
.