Simulasi Pendulum Sederhana Menggunakan HTML5 Canvas


Simulasi pendulum yang termasuk dalam contoh gerakan osilator harmonik sederhana, dapat divisualisasikan menggunakan teknologi HTML5 Canvas.

Gambar di atas adalah tampilan percobaan penulis memvisualisasikan gerak pendulum, dengan kode sebagaimana terlampir di bawah.

Sebelumnya, penulis sudah membuat simulasi ini dalam bentuk aplikasi Android, yang dapat di download pada link di sini.

Di mana simulasi yang penulis buat, adalah dengan kondisi gerakan pendulum yang mengabaikan gesekan dengan udara, dengan gerakan ayunan pendulum mengabaikan redaman, dan simpangan maksimum yang sama tiap framenya.

Karena jika simpangan pendulum tidak sama, maka dapat dipastikan konsep atau kode program yang penulis masukkan untuk membuat simulasi adalah keliru.

Sedangkan persamaan yang penulis gunakan adalah persamaan gerak pendulum turunan dari gaya (Wikipedia, 2019), yang mana penulis dengan menggunakan metode finite difference untuk menyelesaikan perhitungan numeriknya.


Berikut ini adalah kode lengkap HTML5 Canvas simulasi pendulum yang penulis maksud di atas:

<html> 
<head> 
<title>Frekuensi Kata</title> 
</head> 
<body> 
<div> 
<div> 
<h1>Masukkan kata:</h1> 
<textarea id="inputText" style="width:600px;height:300px;"></textarea><br/> 
<button onclick="calculate()">Click me</button> 
</div> 
<div id="pilihan" style="margin:10px;"></div> 
</div> 
<hr/> 
<div id="hasil"></div> 
<script> 
 
function calculate() 
{ 
 document.getElementById("hasil").innerHTML=""; 
 document.getElementById("pilihan").innerHTML=""; 

 var myText=document.getElementById("inputText").value; 
 myText=myText.trim().split(/\s+/); 

 var kata=[]; 
 var num=[]; 

 for(i=0;i<myText.length;i++){ 
  var ketemu=false; 
  myText[i]=myText[i].toLowerCase(); 
  for(j=0;j<kata.length;j++){ 
   if(kata[j]==myText[i]){ 
    num[j]++; 
    ketemu=true; 
    break; 
   } 
  } 
  if(!ketemu){ 
   kata[kata.length]=myText[i]; 
   num[num.length]=1; 
  } 
 } 

 for(i=0;i<kata.length;i++){ 
  for(j=i+1;j<kata.length;j++){ 
   if(num[j]>num[i]){ 
    var tmp1=kata[i]; 
    kata[i]=kata[j]; 
    kata[j]=tmp1; 

    var tmp2=num[i]; 
    num[i]=num[j]; 
    num[j]=tmp2; 
   } 
  } 
 } 

 for(i=0;i<kata.length;i++){ 
  var persen=Math.round(num[i]*100/num[0]); 
  document.getElementById("hasil").innerHTML+="<div style='margin:10px;background-color:#dbdbff;width:"+persen+"%;overflow:visible;'><div style='display:inline;'>"+num[i]+":</div> <div onclick='myFunction(this,"+persen+")' style='display:inline;'>"+kata[i]+"</div></div>"; 
 } 
} 
 
function myFunction(x,s) 
{ 
 if(s<15)s=15; 
 document.getElementById("pilihan").innerHTML+="<span style='font-size:"+s+"'>"+x.innerHTML+"</span>  "; 
} 
</script> 
</body> 
</html> 

Penulis sebenarnya juga mencoba menurunkan sesuai konsep kekelan energi, namun karena pengetahuan matematika penulis yang masih minim, penulis belum bisa menurunkannya.

Jika ada pertanyaan, saran atau kerjasama dapat di layangkan kepada penulis melalui email di uboiz@yahoo.com.

Referensi

Komentar



Postingan populer dari blog ini

Kumpulan Source Code Greenfoot

Algorithma Coretan Abstrak dengan HTML5 Canvas

Game TicTacToe dengan Greenfoot

Honeycomb Style Wallpaper dengan HTML5 Canvas

Cara Membuat Halaman HTML Sederhana

Kode Greenfoot Game Snake Sederhana

Melihat Alamat Berbentuk QR Code di Undangan Pernikahan

Algoritma Tombol Putar dengan Greenfoot

Tips Agar Website Anda Segera di Terima oleh Google Adsense dan di-Monetize

Aplikasi Java Query Box