/M.js
by webproger on 2020-04-04
var M = {
co : function(x) {
    return Math.cos(2*Math.PI*x);
}
,
prime : function() {
    var s = 'rgba(220,220,220,1)';
    var t = 'rgba(180,180,180,1)';
    var n = 120;
    var u = 5;
    var m = 20;
    var i,j,k;
    var a = new Array();
    for(i=0; i<=n; i++) {
        Q.add(m+u*i,m);
        Q.add(m+u*i,m+u*n);
        if(i%12) Q.draw(1,s,'line');
        else Q.draw(1,t,'line');
    }
    for(j=0; j<=n; j++) {
        Q.add(m    ,m+u*j);
        Q.add(m+u*n,m+u*j);
        Q.draw(1,s,'line');
    }
    Q.add(m    ,m+2*u);
    Q.add(m+u*n,m+2*u);
    Q.draw(1,t,'line');
    
    for(j=1; j<=n; j++) a[j] = 0;
    for(i=1; i<=n; i++) {
        for(j=i; j<=n; j+=i) {
            Q.c.beginPath();
            Q.c.arc(m+j*u,m+(n-i)*u,2,0,2*Math.PI,false);
            Q.c.fillStyle = 'rgba(0,0,0,1)';
            Q.c.fill();
            a[j]++;
        }
    }
    for(j=1; j<=n; j++) {
        Q.c.beginPath();
        Q.c.arc(m+j*u,m+a[j]*u,2,0,2*Math.PI,false);
        Q.c.fillStyle = 'rgba(255,0,0,1)';
        Q.c.fill();
    }
    for(i=3; i<=n; i++) {
        k = 1;
        for(j=2; j<=i-1; j++) {
            k *= (Math.cos(2*Math.PI*i/j-Math.PI)+1)*j;
        }
        k = Math.round(k);
        Q.c.beginPath();
        Q.c.arc(m+i*u,m+k,2,0,2*Math.PI,false);
        Q.c.fillStyle = 'rgba(0,0,255,1)';
        Q.c.fill();
    }
}
,
prime2 : function() {
  var s = 'rgba(220,220,220,1)';
  var n = 10;
  var u = 100;
  var m = 20;
  var h = 600;
  var b =2;
  var i,j,k;
  var a = new Array();
  for(i=0; i<=n; i++) {
    Q.add(m+u*i,m);
    Q.add(m+u*i,m+h);
    Q.draw(1,s,'line');
  }
  for(j=0; j<=h; j+=u) {
    Q.add(m    ,m+j);
    Q.add(m+u*n,m+j);
    Q.draw(1,s,'line');
  }
  Q.c.beginPath();
  Q.c.arc(m+2*u,m+h-u,3,0,2*Math.PI,false);
  Q.c.fillStyle = 'rgba(0,0,0,1)';
  Q.c.fill();
  Q.c.beginPath();
  Q.c.arc(m+3*u,m+h-u,3,0,2*Math.PI,false);
  Q.c.fillStyle = 'rgba(0,0,0,1)';
  Q.c.fill();
  Q.c.beginPath();
  Q.c.arc(m+5*u,m+h-u,3,0,2*Math.PI,false);
  Q.c.fillStyle = 'rgba(0,0,0,1)';
  Q.c.fill();
  Q.c.beginPath();
  Q.c.arc(m+7*u,m+h-u,3,0,2*Math.PI,false);
  Q.c.fillStyle = 'rgba(0,0,0,1)';
  Q.c.fill();
  
  
  // graph 1/x
  for(i=10; i<=n*u; i++) {
    x = m+i;
    y = m+h-u-1/(i/u)*u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(0,0,0,1)','line');
  // graph ln(x)
  for(i=5; i<=n*u; i++) {
    x = m+i;
    y = m+h-u-Math.log(i/u)/Math.log(b)*u;
    if(y>=m && y<=m+h) Q.add(x,y);
    if((y-m)%u==0) {
      Q.c.beginPath();
      Q.c.arc(x,y,3,0,2*Math.PI,false);
      Q.c.fillStyle = 'rgba(255,0,0,1)';
      Q.c.fill();
    }
  }
  Q.draw(1,'rgba(0,0,0,1)','line');
  
  // graph co(x)
  for(i=0; i<=n*u; i++) {
    x = m+i;
    y = m+h-u+M.co(i/u)*u-u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(0,0,0,1)','line');
  for(i=0; i<=n*u; i++) {
    x = m+i;
    y = m+h-u+M.co(i/u/2)*u-u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(255,0,0,1)','line');
  for(i=0; i<=n*u; i++) {
    x = m+i;
    y = m+h-u+M.co(i/u/3)*u-u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(255,140,0,1)','line');
  for(i=0; i<=n*u; i++) {
    x = m+i;
    y = m+h-u+M.co(i/u/4)*u-u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(0,128,0,1)','line');
  for(i=0; i<=n*u; i++) {
    x = m+i;
    y = m+h-u+M.co(i/u/5)*u-u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(50,205,50,1)','line');
  for(i=0; i<=n*u; i++) {
    x = m+i;
    y = m+h-u+M.co(i/u/6)*u-u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(0,0,255,1)','line');
  for(i=0; i<=n*u; i++) {
    x = m+i;
    y = m+h-u+M.co(i/u/7)*u-u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(30,144,255,1)','line');
  for(i=0; i<=n*u; i++) {
    x = m+i;
    y = m+h-u+M.co(i/u/8)*u-u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(255,0,255,1)','line');
  for(i=0; i<=n*u; i++) {
    x = m+i;
    y = m+h-u+M.co(i/u/9)*u-u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(220,20,60,1)','line');
  for(i=0; i<=n*u; i++) {
    x = m+i;
    y = m+h-u+M.co(i/u/10)*u-u;
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(1,'rgba(0,139,139,1)','line');
  
  // sum
  for(i=10; i<=n*u; i+=10) {
    x = m+i;
    y = m+h-u;
    k = Math.round(i/10);
    for(j=1; j<=k; j++) {
      y -= M.co(i/10/j)*100;
    }
    if(y>=m && y<=m+h) Q.add(x,y);
  }
  Q.draw(2,'rgba(192,192,192,0)','line');
}
,
si : function(x) {
  return Math.sin(2*Math.PI*x);
}
,
triginverse : function() {
  var b,c,i,j,k,x,y;
  var l1 = 350;
  var l2 = 200;
  var l3 = 30;
  var l4 = 550;
  var d = 10;
  var c1 = 'rgba(0,0,0,1)';
  var c2 = 'rgba(128,128,128,1)';
  var c3 = 'rgba(230,230,230,1)';
  var c4 = 'rgba(245,245,245,1)';
  var c5 = 'rgba(192,192,192,1)';
  
  // axes
  Q.add(l3      ,l3+l1);
  Q.add(l3+l2+l4,l3+l1);
  Q.draw(1,c2,'line',15,10,0,0,0);
  Q.add(l3+l2,l3+l2+l1);
  Q.add(l3+l2,l3);
  Q.draw(1,c2,'line',15,10,0,0,0);
  
  b = Math.round((-Math.PI/2)*100);
  Q.add(l3+l2+b,l3+l1+l2);
  Q.add(l3+l2+b,l3);
  Q.draw(1,c3,'line',0,0,0,0,0);
  b = Math.round((1*Math.PI/2)*100);
  Q.add(l3+l2+b,l3+l1+l2);
  Q.add(l3+l2+b,l3);
  Q.draw(1,c3,'line',0,0,0,0,0);
  b = Math.round((2*Math.PI/2)*100);
  Q.add(l3+l2+b,l3+l1+l2);
  Q.add(l3+l2+b,l3);
  Q.draw(1,c3,'line',0,0,0,0,0);
  b = Math.round((3*Math.PI/2)*100);
  Q.add(l3+l2+b,l3+l1+l2);
  Q.add(l3+l2+b,l3);
  Q.draw(1,c3,'line',0,0,0,0,0);

  b = -100;
  Q.add(l3+l2+b,l3+l1+l2);
  Q.add(l3+l2+b,l3);
  Q.draw(1,c3,'line',0,0,0,0,0);
  b = 100;
  Q.add(l3+l2+b,l3+l1+l2);
  Q.add(l3+l2+b,l3);
  Q.draw(1,c3,'line',0,0,0,0,0);
  
  b = Math.round((-Math.PI/2)*100);
  Q.add(l3,l3+l1-b);
  Q.add(l3+l2+l4,l3+l1-b);
  Q.draw(1,c3,'line',0,0,0,0,0);
  b = Math.round((1*Math.PI/2)*100);
  Q.add(l3,l3+l1-b);
  Q.add(l3+l2+l4,l3+l1-b);
  Q.draw(1,c3,'line',0,0,0,0,0);
  b = Math.round((2*Math.PI/2)*100);
  Q.add(l3,l3+l1-b);
  Q.add(l3+l2+l4,l3+l1-b);
  Q.draw(1,c3,'line',0,0,0,0,0);
  b = -100;
  Q.add(l3,l3+l1-b);
  Q.add(l3+l2+l4,l3+l1-b);
  Q.draw(1,c3,'line',0,0,0,0,0);
  b = 100;
  Q.add(l3,l3+l1-b);
  Q.add(l3+l2+l4,l3+l1-b);
  Q.draw(1,c3,'line',0,0,0,0,0);
  
  // sine ----------------------------------------
  c = Math.round((-Math.PI/2)*100);
  for(i=-l2; i<=c; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.sin(i/100)*100;
    Q.add(x,y);
  }
  Q.draw(1,'rgba(255,140,0,1)','curve',0,0,0,0,0);
  b = Math.round((-Math.PI/2)*100);
  c = Math.round((Math.PI/2)*100);
  for(i=b; i<=c; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.sin(i/100)*100;
    if(y<l3+l2+l1 && y>l3) Q.add(x,y);
  }
  Q.draw(2,'rgba(255,140,0,1)','curve',0,0,5,2,0);
  b = Math.round((Math.PI/2)*100);
  for(i=b; i<=l4; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.sin(i/100)*100;
    Q.add(x,y);
  }
  Q.draw(1,'rgba(255,140,0,1)','curve',0,0,0,0,0);
  
  // consine -------------------------------------
  for(i=-l2; i<=0; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.cos(i/100)*100;
    Q.add(x,y);
  }
  Q.draw(1,'rgba(30,144,255,1)','curve',0,0,0,0,0);
  b = 0;
  c = Math.round((2*Math.PI/2)*100);
  for(i=b; i<=c; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.cos(i/100)*100;
    if(y<l3+l2+l1 && y>l3) Q.add(x,y);
  }
  Q.draw(2,'rgba(30,144,255,1)','curve',0,0,5,2,0);
  b = Math.round((2*Math.PI/2)*100);
  for(i=b; i<=l4; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.cos(i/100)*100;
    Q.add(x,y);
  }
  Q.draw(1,'rgba(30,144,255,1)','curve',0,0,0,0,0);
  b = -100;
  c = 100;
  for(i=b; i<=c; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.acos(i/100)*100;
    if(y<l3+l2+l1 && y>l3) Q.add(x,y);
  }
  Q.draw(2,'rgba(0,0,255,1)','curve',0,0,0,0,0);
  
  // tangent -------------------------------------
  b = -l2;
  c = Math.round((-Math.PI/2-1/10)*100);
  for(i=b; i<=c; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.tan(i/100)*100;
    if(y<l3+l2+l1 && y>l3) Q.add(x,y);
  }
  Q.draw(1,'rgba(50,205,50,1)','curve',0,0,0,0,0);
  b = Math.round((-Math.PI/2+1/10)*100);
  c = Math.round(( Math.PI/2-1/10)*100);
  for(i=b; i<=c; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.tan(i/100)*100;
    if(y<l3+l2+l1 && y>l3) Q.add(x,y);
  }
  Q.draw(2,'rgba(50,205,50,1)','curve',0,0,5,2,0);
  b = Math.round((  Math.PI/2+1/10)*100);
  c = Math.round((3*Math.PI/2-1/10)*100);
  for(i=b; i<=c; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.tan(i/100)*100;
    if(y<l3+l2+l1 && y>l3) Q.add(x,y);
  }
  Q.draw(1,'rgba(50,205,50,1)','curve',0,0,0,0,0);
  b = Math.round((3*Math.PI/2+1/10)*100);
  c = l4;
  for(i=b; i<=c; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.tan(i/100)*100;
    if(y<l3+l2+l1 && y>l3) Q.add(x,y);
  }
  Q.draw(1,'rgba(50,205,50,1)','curve',0,0,0,0,0);
  
  b = -l2;
  c = l4;
  for(i=b; i<=c; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.atan(i/100)*100;
    if(y<l3+l2+l1 && y>l3) Q.add(x,y);
  }
  Q.draw(2,'rgba(0,128,0,1)','curve',0,0,0,0,0);
  
  // arcsine
  b = -100;
  c = 100;
  for(i=b; i<=c; i++) {
    x = l3+l2+i;
    y = l3+l1-Math.asin(i/100)*100;
    if(y<l3+l2+l1 && y>l3) Q.add(x,y);
  }
  Q.draw(2,'rgba(255,0,0,1)','curve',0,0,0,0,0);
}

}