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

Apps Script untuk Cetak Sertifikat

Kebodohan Karyawan Menyalahkan Sistem

Kode Apps Script MailApp untuk Form Mengirimkan Email

Checking Data yang Belum Dimasukkan dalam Daftar Menggunakan Query Google Sheet

Generate Karakter Acak dan Menempatkannya di Sel Google Sheets dengan Apps Script

Menyembunyikan Failed Load Images di Blogger

Algorithma Bilangan Prima dengan Javascript

Apps Script untuk Mengirimkan Notifikasi Approval

Mencoba Submit Theme di Wordpress.org

Menghapus Baris di Google Sheets yang Memiliki Sel Kosong dengan Apps Script