Advertisement
Guest User

Untitled

a guest
Jul 24th, 2015
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.60 KB | None | 0 0
  1.  
  2.  
  3. /*****************************************
  4. *
  5. * Função responsál por inicia os eixos,
  6. * funções ...
  7. *
  8. /*****************************************/
  9.  
  10. function init(zoom, translatePos,axes) {
  11.  
  12. var canvas = document.getElementById('canvas');
  13. var context = canvas.getContext('2d');
  14.  
  15. context.restore();
  16. context.clearRect(0,0, canvas.width, canvas.height);
  17. context.save();
  18. context.translate(translatePos.x , translatePos.y);
  19.  
  20. showAxes(context); //Plota os eixos
  21.  
  22. context.scale(zoom,zoom);
  23.  
  24. context.translate(-370 , -51);
  25.  
  26. desenha(canvas,context,axes);
  27. pontos(context);
  28.  
  29. }
  30.  
  31. /*************************************
  32. *
  33. * Assintotas para ser plotadas
  34. *
  35. **************************************/
  36.  
  37. function Assintota(x) { return 2}
  38.  
  39. /*************************************
  40. *
  41. * Funções para ser plotadas
  42. *
  43. **************************************/
  44.  
  45. function fun1(x) {return ((2)*2*x*x)/ (1 + 2*x*x)}
  46. //((2)*2*x*x)/ (1 + 2*x*x)
  47.  
  48.  
  49. function desenha(canvas,context,axes) {
  50.  
  51. if (null==canvas || !canvas.getContext) return;
  52.  
  53. funGraph(context,axes,fun1,"rgb(0,106,224)",2);
  54.  
  55. context.setLineDash([10,10]);
  56. funGraph(context,axes,Assintota,"rgb(0,106,224)",2);
  57.  
  58.  
  59. }
  60.  
  61. /*************************************
  62. *
  63. * Função que plota o gráfico
  64. *
  65. * Obs.:
  66. * As variáveis iMax e iMin são o 'tamanho' da função
  67. *
  68. **************************************/
  69.  
  70. function funGraph(context,axes,func,color,thick) {
  71.  
  72.  
  73. var xx, yy, dx=4, x0=axes.x0, y0=axes.y0, scale=axes.scale;
  74. var iMax = Math.round((context.canvas.width-x0)/dx)*100;
  75. var iMin = axes.doNegativeX ? (Math.round(-x0/dx))*100 : 0;
  76.  
  77. context.beginPath();
  78. context.lineWidth = thick;
  79. context.strokeStyle = color;
  80.  
  81. for (var i=iMin;i<=iMax;i++) {
  82. xx = dx*i; yy = scale*func(xx/scale);
  83. if (i==iMin) context.moveTo(x0+xx,y0-yy);
  84. else context.lineTo(x0+xx,y0-yy);
  85. }
  86. context.stroke();
  87. }
  88.  
  89.  
  90. /*************************************
  91. *
  92. * Função que desenha os exios 'X' e 'Y'
  93. *
  94. **************************************/
  95.  
  96. function showAxes(context) {
  97.  
  98. context.beginPath();
  99. context.lineWidth = 2;
  100. context.strokeStyle = "rgb(14,12,12)";
  101. context.moveTo(-7400,0); context.lineTo(7400,0);
  102. context.moveTo(0,-7400); context.lineTo(0,7400);
  103. context.font="9px Arial";
  104.  
  105. /** Eixo Y */
  106.  
  107. var pass = -5000;
  108. var i = -100;
  109. for (i ; i <= 100; i++) {
  110.  
  111. context.moveTo(-5,pass);
  112. context.lineTo(5,pass);
  113. if ( i != 0) context.fillText(-i,15 ,pass);
  114. pass += 50;
  115.  
  116. }
  117.  
  118. /** Eixo X */
  119.  
  120. var pass = -5000;
  121. var i = -100;
  122. for (i ; i <= 100; i++) {
  123.  
  124. context.moveTo(pass,-5);
  125. context.lineTo(pass,5);
  126. if ( i != 0) context.fillText(i,pass ,25);
  127. pass +=50;
  128.  
  129. }
  130.  
  131. context.stroke();
  132.  
  133. }
  134.  
  135. window.onload = function () {
  136.  
  137. var canvas = document.getElementById('canvas');
  138. var context = canvas.getContext('2d');
  139.  
  140. var axes={
  141.  
  142. 'x0': .5 + .5*canvas.width,
  143. 'y0': .1 + .1*canvas.height,
  144. 'scale' : 50,
  145. 'doNegativeX' : true
  146.  
  147. };
  148.  
  149. var translatePos = {
  150.  
  151. x: canvas.width/2,
  152. y: canvas.height/2
  153.  
  154. };
  155.  
  156. var zoom = 1;
  157. var startDragOffset = {};
  158. var mouseDown = false;
  159.  
  160.  
  161. /***********************************************************
  162. * Funções que observam eventos dos botões '+' e '-'
  163. ***********************************************************/
  164.  
  165. document.getElementById('plus').addEventListener('click', function() {
  166.  
  167. axes.scale += 25;
  168. alert(axes.scale);
  169. if (axes.scale <= 0) {
  170. axes.scale = 1;
  171. }
  172.  
  173. init(zoom, translatePos,axes);
  174.  
  175. }, false);
  176.  
  177. document.getElementById('minus').addEventListener('click', function() {
  178.  
  179. axes.scale -= 25;
  180.  
  181. if (axes.scale <= 0) {
  182. axes.scale = 1;
  183. }
  184.  
  185. init(zoom, translatePos,axes);
  186.  
  187. }, false);
  188.  
  189.  
  190. /*******************************
  191. * Reseta a posição da tela
  192. ********************************/
  193.  
  194. document.getElementById('reset').addEventListener('click', function() {
  195.  
  196. zoom = 1;
  197. translatePos = {
  198.  
  199. x: canvas.width / 2,
  200. y: canvas.height / 2
  201.  
  202. };
  203.  
  204. init(zoom, translatePos,axes);
  205.  
  206. }, false);
  207.  
  208.  
  209.  
  210. /*********************************************
  211. * Funções reposáveis pelo os eventos da tela
  212. **********************************************/
  213.  
  214. canvas.addEventListener('mousedown', function(evt) {
  215.  
  216. mouseDown = true;
  217. startDragOffset.x = evt.clientX - translatePos.x;
  218. startDragOffset.y = evt.clientY - translatePos.y;
  219.  
  220. });
  221.  
  222. canvas.addEventListener('mouseup', function(evt) {
  223.  
  224. mouseDown = false;
  225.  
  226. });
  227.  
  228. canvas.addEventListener('mouseover', function(evt) {
  229.  
  230. mouseDown = false;
  231.  
  232. });
  233.  
  234. canvas.addEventListener('mouseout', function(evt) {
  235.  
  236. mouseDown = false;
  237.  
  238. });
  239.  
  240.  
  241. canvas.addEventListener('mousemove', function(evt) {
  242.  
  243. $('#canvas').css({'cursor': 'url(imgGrafico/grab.cur), auto'});
  244.  
  245. move(context,axes,evt);
  246.  
  247. if(mouseDown) {
  248.  
  249. translatePos.x = evt.clientX - startDragOffset.x; //Sabe
  250. translatePos.y = evt.clientY - startDragOffset.y;
  251.  
  252. if (translatePos.x > 5010) translatePos.x = 5010;
  253. if (translatePos.x < -4280) translatePos.x = -4280;
  254. if (translatePos.y > 5012) translatePos.y = 5012;
  255. if (translatePos.y < -4500) translatePos.y = -4500;
  256.  
  257. init(zoom, translatePos,axes);
  258.  
  259. }
  260.  
  261. });
  262.  
  263. init(zoom, translatePos,axes);
  264.  
  265.  
  266. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement