Nugroho's blog.

Friday, November 30, 2012

Supernova: Partikel; batu kokoh di aliran sungai besar fanatisme

Ini bukan spoiler. Hm, atau sebisa mungkin bukan spoiler, :)

Sesore membaca Partikel, dengan Royyan yang tidur pulas disampingku.



Setelah bagian awal yang bikin bulu kuduk meremang dan reflek tangan yang membelai Royyan dengan penuh syukur, pada sekitar pertengahan buku, aku teringat Bodhi, Elektra dan Ksatria.

Aku teringat Bodhi saat direcoki Tristan yang sedang semangat-semangatnya karena baru masuk Buddha (getsul: seseorang yang baru masuk Tibetan Buddhis) dan berencana ke Nepal.

Juga teringat Elektra saat mendengarkan percakapan Daddy 'Super Wija' dengan Watty yang mau masuk Islam.
(Kok tanya Daddy, tanya Tuhan dong? Sudah Dad. Lalu Tuhan bilang apa?)

Juga saat Ksatria bertanya apakah Adam dan Hawa menikah.

Dee, untuk kesekian kalinya, kembali menulis hal-hal yang beberapa penulis lain bahkan tak berani menyentuh atau mendekatinya. Yeah, agama memang hal yang sensitif untuk dibicarakan.

Dee, melalui Zarah, dengan tenang, tanpa pretensi bertanya hal yang sederhana pada Abah,kakeknya. Namun seperti segala pertanyaan yang berhubungan dengan keyakinan, bukan jawaban yang didapat melainkan hidung berdarah dan 'disinheritance'.

Halaman-halaman awal, agak tengah, mengingatkanku akan 'Atheis' karya Achdiat Kartadimaja dan 'The Da Vinci Code'-nya Dan Brown. Sangat tidak baik untuk tekanan darah para penganut fanatik buta (eh, semua fanatik pasti membabi buta ya). Semoga buku ini tidak dicekal atau menuai protes seperti Akar saat memajang aksara suci hindu Omkara di sampul depan (edisi berikutnya, sampul depannya jadi bolong).

Kalaupun iya, setidaknya aku punya versi asli buku ini. Lanjut baca ah,...

Eh, ngganti popoknya Royyan dulu, :)

Array and Canvas of HTML5 in Blogger

For some reasons, I wasn't able to display canvas consist of object with array. Dunnow,...

Seeking solution...

 UPDATE: It seems blogger didn't support prototype, so I have to improvise my code to adapt it.

The Bouncing Ball

The Code for this under the script tag



var context;
var x=100;
var y=200;
var dx=5;
var dy=5;

function init(){
canvas=myCanvas;
context= myCanvas.getContext('2d');
setInterval(draw,10);
bal=new bola('#007700', 17,dx,dy);
}

function draw(){
context.clearRect(0,0, 300,300);
bal.Pantul();
bal.Create();
bal.x+=bal.dx;
bal.y+=bal.dy;
}

function bola(color, r,dx,dy){
this.canvas = canvas;
this.context = canvas.getContext('2d');
this.r = r;
this.x =Math.random()*400+30;
this.y = Math.random()*250+30;
this.dx = dx;
this.dy = dy;
this.color = color;
}

bola.prototype.Create = function (){
this.context.beginPath();
this.context.fillStyle = this.color;
this.context.arc(this.x,this.y,this.r,0,Math.PI*2,false);
this.context.fill();
}

bola.prototype.Pantul = function (){
if (this.x >= (canvas.width - this.r) || this.x <= this.r) this.dx *= -1;
if (this.y >= (canvas.height - this.r) || this.y <= this.r) this.dy *= -1;
}

window.onload = function(){
init()
}

Bouncing Ball in HTML 5 using Canvas Method

A Result of Trial and Error


Here the code

Friday, November 16, 2012

Bouncing Ball using Array in HTML5

I want to create bouncing ball program that's very easy on Flash, Python or Delphi yet very tricky on html5. The program consist of n ball with random velocity (each) moving in a 2d box (oh yeah, square then :) ) 

I am playing with array in html5 script which is helpful on this program. I don't declare the array using

aBola = new array()

that come  as standart on many language, but prefer

aBola = []

instead, just like list on python. In this program, array's just like container for ball.

In html5, moving an object is a bit tricky and, for some Pascal programmer like me, bringing an old memory of draw-clear-draw-clear... cycle; draw a ball, delete it, draw the same ball but slightly right, delet it, ... and so on. All that kind of tedious job, but it worth for the sake of fast execution and no-need-slow-loading-flash-player thing.




Here's the code under script tag. Keep in mind that many variable's name is in indonesian (ball -> bola, bounce->pantul, collision -> tumbukan )
 
//bola:ball
//pantul:bounce
var context;
var n=10;

// membuat bola
function bola(color, r,dx,dy){
this.canvas = canvas;
this.context = canvas.getContext('2d');
this.r = r;
this.x =Math.random()*400+30;
this.y = Math.random()*250+30;
this.dx = dx;
this.dy = dy;
this.color = color;
}

bola.prototype.Create = function (){
this.context.beginPath();
this.context.fillStyle = this.color;
this.context.arc(this.x,this.y,this.r,0,Math.PI*2,false);
this.context.fill();
}
bola.prototype.Pantul = function (){
if (this.x >= (canvas.width - this.r) || this.x <= this.r) this.dx *= -1;
if (this.y >= (canvas.height - this.r) || this.y <= this.r) this.dy *= -1;
}
function init(){
canvas = document.getElementById("myCanvas")
context = canvas.getContext('2d');
// membuat array untuk bola
//create array for ball
aBola = [];
for (i=1;i<=n;i++){
//membuat bola sejumlah n dengan dx dan dy acak
//create n balls with random dx and dy
dx = Math.random()*10-5;
dy = Math.random()*10-5;
aBola.push(new bola('#007700', 17,dx,dy));
}
setInterval(draw,20);
}
function draw(){
context.clearRect(0,0, 500,350);
for (i in aBola) {
//menggerakkan bola
//moving balls
aBola[i].x += aBola[i].dx;
aBola[i].y += aBola[i].dy;
aBola[i].Pantul();
aBola[i].Create();
}
}

(to be continued)

Tuesday, November 13, 2012

2D/3D Ball Collision

I used on 1D collission problem where, in case of elastic collision, the ball is changing velocity each other. In 2D/3D case however, the collision is not always head-on collision (which is basically 1 dimension collision).

Head-on
The system above's easy too solve, as simple as interchanging velocity (in elastic case).




Not head-on

When two balls are in non-head-on collision we could always using transposed new coordinate where both of ball center are on the new x-axis like below



On the new coordinate, we can treat the velocities along x-axis as one dimensional collision case and let go on other component (y, z) intact.

Below's snippet from python code of balls collision detection; the whole code is code of moving many ball on a box.

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