Advertisement
ipsBruno

(Javascript) Canvas Mapeamento

Apr 9th, 2012
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <canvas id="canvas" width="170" height="170" />
  2.  
  3.  
  4. <script>
  5.  
  6. var canvas = document.getElementById("canvas");
  7.  
  8. var ctx = canvas.getContext("2d");
  9. ctx.beginPath();
  10. ctx.moveTo(0,0);
  11. ctx.lineTo(0,150);
  12. ctx.lineTo(150,150);
  13. ctx.lineTo(0,0);
  14. ctx.stroke();
  15.  
  16.  
  17.  
  18. // Criar array para guardar nossos vertíces
  19. // Versão simplificada para checar menor caminho, ponto a ponto
  20. var distancias =
  21. [
  22.         [000, 000], // ponto de saida
  23.         [[0,145],[145,145]], // caminho 1          
  24.         [145, 145]  // caminho 2           
  25. ];
  26.  
  27.  
  28. // Criar quadrados para simbolizar a divisão de vertíces
  29. ctx.fillRect(0,145,6,6)
  30. ctx.fillRect(145,145,6,6)
  31. ctx.fillRect(0,0,6,6)
  32.  
  33. var vertices = distancias.length
  34. var min = [1.7976931348623157E+10308, -1]
  35.  
  36. tmpmin = 0
  37. for(j = 1; j != vertices; j++) {
  38.     if(distancias[j][0].length == undefined)
  39.         tmpmin = Math.sqrt(((distancias[0][0] - distancias[j][0])*(distancias[0][0] - distancias[j][0])) + ((distancias[0][1] - distancias[j][1])*(distancias[0][1] - distancias[j][1])))
  40.     else {
  41.         tmpmin  = Math.sqrt(((distancias[0][0] - distancias[j][0][0])*(distancias[0][0] - distancias[j][0][0])) + ((distancias[0][1]  - distancias[j][0][1])*(distancias[0][1] - distancias[j][0][1])))
  42.  
  43.         for(i = 0; i != (distancias[j].length)-1; i++) {       
  44.             tmpmin += Math.sqrt(((distancias[j][i][0] - distancias[j][i+1][0])*(distancias[j][i][0] - distancias[j][i+1][0])) + ((distancias[j][i][1] - distancias[j][i+1][1])*(distancias[j][i][1] - distancias[j][i+1][1]))) 
  45.         }
  46.     }
  47.  
  48.     if(tmpmin < min[0]) {
  49.         min[0] = tmpmin;
  50.         min[1] = j;
  51.     }
  52. }
  53.  
  54. ctx.fillStyle  = "red"
  55. for(x = distancias[min[1]][0]; x > -1; x--) {
  56.     ctx.fillRect(x,distancias[min[1]][1]--,2,2);
  57. }
  58.  
  59. </script>
  60.  
  61.  
  62.  
  63.  
  64.  
  65. // Por rápido
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement