Advertisement
hiker43

Potencijal

Jan 9th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta charset="utf-8">
  5.         <title>Naboj</title>
  6.     </head>
  7.     <body>
  8.         <script>      
  9.             /*
  10.             Osnove programiranja in Programiranje 1
  11.             5. lab vaja
  12.             Potencial točkastega naboja
  13.  
  14.             */
  15.  
  16.             function pokaziPotenciale(tabela, canvdim) {
  17.                
  18.                 // Ustvarimo canvas in ga pripnemo k <body>. Rojec.
  19.                 var canv = document.createElement('canvas');
  20.                 canv.id = "polje";
  21.                 canv.width = canvdim;
  22.                 canv.height = canvdim;
  23.                 document.body.appendChild(canv);
  24.                
  25.                 // Kunaver.
  26.                 var maxRow = tabela.map(function (row) {
  27.                     return Math.max.apply(Math, row);
  28.                 });
  29.                 var max = Math.max.apply(null, maxRow);
  30.  
  31.                 var minRow = tabela.map(function (row) {
  32.                     return Math.min.apply(Math, row);
  33.                 });
  34.                 var min = Math.min.apply(null, minRow);
  35.                
  36.                 var paleta = ["#E5000A", "#DF000E", "#D90113", "#D30117", "#CD021C", "#C70321", "#C10325", "#BB042A", "#B6042F", "#B00533", "#AA0638",
  37.                     "#A4063D", "#9E0741", "#980846", "#92084A", "#8C094F", "#870954", "#810A58", "#7B0B5D", "#750B62", "#6F0C66", "#690C6B", "#630D70",
  38.                     "#5D0E74", "#580E79", "#520F7E", "#4C1082", "#461087", "#40118B", "#3A1190", "#341295", "#2E1399", "#29139E", "#2314A3", "#1D14A7",
  39.                     "#1715AC", "#1116B1", "#0B16B5", "#0517BA", "#0018BF"];
  40.  
  41.                 kocka_size = 1;                
  42.                
  43.                 var korak = (paleta.length - 1) / (Math.log(max) - Math.log(min));
  44.                
  45.                 var offset = -korak * Math.log(min);
  46.  
  47.                 for (var i = 0; i < canvdim; i++) {
  48.                     for (var j = 0; j < canvdim; j++) {                    
  49.                         val = tabela[i][j];
  50.                         m = korak * Math.log(val) + offset;                      
  51.                         m = Math.round(m);
  52.                         var c = document.getElementById("polje");
  53.                         var ctx = c.getContext("2d");
  54.                         //console.log(m);
  55.                         ctx.fillStyle = paleta[m];
  56.                         ctx.fillRect(j * kocka_size, i * kocka_size, kocka_size, kocka_size);
  57.                     }
  58.                 }
  59.                
  60.                 // Rojec.
  61.                 if(0){
  62.                     // Izrisi legendo barv
  63.                     var div = document.createElement('div');
  64.                     div.innerHTML="Legenda barv:";
  65.                     document.body.appendChild(div);    
  66.                    
  67.                     // Barve:
  68.                     for(i=0; i<paleta.length; i++){
  69.                     var div = document.createElement('div');
  70.                     div.style = "background-color:"+paleta[i];
  71.                     div.innerHTML=korak*i;
  72.                     document.body.appendChild(div);
  73.                     }
  74.                 }
  75.                
  76.             }
  77.         const eps=8.854e-12;
  78.  
  79.         function razdalja(niza, x, y)
  80.         {
  81.             return Math.sqrt(Math.pow(niza[0]-x,2)+Math.pow(niza[1]-y,2));
  82.         }
  83.  
  84.         function potencial(Q, R)
  85.         {
  86.             if(R==0) return Number.MAX_SAFE_INTEGER;
  87.             return Q/(4*Math.PI*eps*R);
  88.         }
  89.  
  90.         var tab=[];
  91.         var dimtabele=400;
  92.         var polozajNaboja=[0, 0];
  93.         var Q=1;
  94.         var i, j, x, y, r;
  95.         for(i=0; i < dimtabele; i++)
  96.         {
  97.             tab[i]=[];
  98.             y=(dimtabele/2-i)/dimtabele;
  99.             for(j=0; j < dimtabele; j++)
  100.             {
  101.                 x=(-dimtabele/2+j)/dimtabele;
  102.                 r=razdalja(polozajNaboja, x, y);
  103.                 tab[i][j]=potencial(Q, r);
  104.             }
  105.            
  106.         }
  107.         pokaziPotenciale(tab, dimtabele);
  108.  
  109.  
  110.  
  111.         </script>
  112.     </body>
  113. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement