2015-12-03

js画图,线等数学应用。

撰写文前的念想:

本人学渣,关键时刻还是不能不做笔记。

主题:

今天主要讲的是,用js画画。

原理分析:

用js画画,原理是我们要先在页面几像素的点,然后根据不同的规则将点连接起来,比如 圆圈,需要绕地球一圈的角度。从而输出到浏览器。这样就是一副完整的画。完美~~

实施过程:

实现的方法有很多,因本人知识有限,下面是目前能想到的招式,欢迎补充!拜谢。

1)用原生js来实现

//画点【下面的方法会依照画点来延伸】

function makedot(){

var oDiv=document.createElement('div');  //生成一个div节点

  oDiv.style.position='absolute'; //设置absolute属性,用top,left定位

   oDiv.style.height='2px'; //设置点宽高

  oDiv.style.width='2px'; 

  oDiv.style.backgroundColor='red'; //颜色

   oDiv.style.left='100px'; //x坐标 

  oDiv.style.top='200px'; //y坐标

   document.body.appendChild(oDiv); //输出

}

//画线,需要记住两点坐标。

function line(x1,y1,x2,y2){

var slope=(y2-y1)/(x2-x1); //斜率

var diff=x2-x1; //根据两个点的x坐标差,以x1来比较,如果在右边则向左画,否则向右画,x左边一样则垂直。

if(x1<x2){

  for(var i=0;i<diff;i++){

   makedot(x1+i,y1+slope*i);

  }

 }else if(x1>x2){

  for(var i=0;i>diff;i--){

   makedot(x1+i,y1+slope*i);

  }

 }else{ //画垂直线

  var temp=y2-y1;

  if(temp>0){

   for(var i=0;i<temp;i++){

    makedot(x1,y1+i);

   }

  }else{

   for(var i=0;i>temp;i--){

    makedot(x1,y1+i);

   }

  }

 }

}

//画圆, 圆的参数方程 x=a+r cosθ y=b+r sinθ (a,b)为圆心坐标 r为圆半径 θ为参数

function circle(x,y,r){ //(x,y)圆心,r半径

var dotx,doty,radio;

var Pi=Math.PI;

makedot(x,y);

for(var i=0;i<360;i+=0.5){

  radio=i*Pi/180;

  dotx=r*Math.cos(radio)+x;

  doty=r*Math.sin(radio)+y

  makedot(dotx,doty);

 }

}

2)html5 canvas

如果不考虑低版本的兼容性的话,canvas应该是首选。

//获取Canvas对象(画布)

var canvas = document.getElementById("myCanvas");

//简单地检测当前浏览器是否支持Canvas对象,以免在一些不支持html5的浏览器中提示语法错误

if(canvas.getContext){  

    //获取对应的CanvasRenderingContext2D对象(画笔)

    var ctx = canvas.getContext("2d");     

    //开始一个新的绘制路径

    ctx.beginPath();

    //设置弧线的颜色为蓝色

    ctx.strokeStyle = "blue";

    var circle = {

        x : 100,    //圆心的x轴坐标值

        y : 100,    //圆心的y轴坐标值

        r : 50      //圆的半径

    };

    //以canvas中的坐标点(100,100)为圆心,绘制一个半径为50px的圆形

    ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI * 2, true);    

    //按照指定的路径绘制弧线

    ctx.stroke();

}

3)svg 【待补充】