Nugroho's blog.: Bouncing Ball inside a Cone

## Sunday, May 29, 2016

### Bouncing Ball inside a Cone

I use vector projection and rejection to calculate velocity after bouncing the side of cone, :)

`#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)Cone        = cone(pos = (0,0,0), axis=(0,5,0), radius = 3, opacity = .2) bola        = sphere(color=color.green,radius=.2)bola.y      = 1bola.x      = -1bola.z      = 1v           = vector(1,-1,0)dt          = 1./16r           = bola.posrc          = Cone.radiush           = vector(Cone.axis)def pantul():    global r,v    #tumbukan dengan lantai    if r.y<0:        r.y = 0        v.y *= -1    rp      = vector(r.x,0,r.z)    hb      = h.y - r.y    rmaks   = hb/h.y*rc    c       = h-rmaks*norm(rp)    #vektor garis singgung                                   #selimut kerucut dengan bidang singgung    #tumbukan dengan selimut kerucut    if mag(rp)>rmaks:        rp  = norm(rp)*rmaks        r   = vector(rp.x,r.y,rp.z)        vp  = dot(v,norm(c))*norm(c)        v   = 2*vp-v    print vdef proses():    global r,v    a   = vector(0,0,0)    v   += a*dt    r   += v*dt    bola.pos  = r    pantul()while 1:    rate(37)    proses()`
.

#### No comments:

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) 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) 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)