canvas中的曲线运动

作者: 编程小飞侠 | 来源:发表于2016-08-26 20:16 被阅读844次

一 :曲线运动

   实现曲线运动的方法目前了解到两种:一种是三角函数,另一种是贝塞尔曲线,在这里我就介绍下如何用三角函数实现曲线运动。

三角函数相信大家在高中都有接触过,比如 正弦、余弦、正切等。这里我就简单介绍下正弦函数的运动轨迹。

 正弦函数图像
QQ截图20160826192452.jpg

如图所示的正弦函数就是一种曲线运动,那么如何能让一个物体能实现这种运动呢?

一:从图中可看出X轴代表的是弧度,Y轴代表的sin(弧度);

   那么弧度与角度是如何换算的?
      2π=360°;
     1°=2π/360°=π/180°;
     1弧度=180°/π;

二: 创建一个Div做为做曲线运动的对象

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
  <style>
    #div{width:10px;height:10px;background: red;position: absolute;top:500px;left:200px;}
.box{position: absolute;border: 1px solid #000;}
  </style>
<body>
  <div id="div"></div>
</body>
</html>

三:用js去控制这个Div的left值和top值

 <script>
      window.onload=function(){


     var oDiv=document.getElementById('div');
     var startX=oDiv.offsetLeft;
     var startY=oDiv.offsetTop;
     var num=0;
     var count=100;
     setInterval(function(){

         num++
        //count用来放大运动的轨迹
        //num*Math.PI/180 代表弧度
         oDiv.style.left=startX+0.5*(num*Math.PI/180)*count+'px';
         oDiv.style.top=startY-2*Math.sin(num*Math.PI/180)*count+'px';
         var oDiv1=document.createElement('div');
         oDiv1.className='box';
         oDiv1.style.left=oDiv.offsetLeft+'px';
         oDiv1.style.top=oDiv.offsetTop+'px';
         document.body.appendChild(oDiv1);

     },10);

      }
  </script>

曲线运动效果示意图

move.gif

四:如何让多物体做曲线运动

```

<script type="text/javascript">
window.onload=function(){

     var oC=document.getElementById('c');
     var oGC=oC.getContext('2d');


     var setArr=[];  //存储圆心坐标  半径  颜色等数据,以json的形式存储数据  

     setInterval(function(){

       oGC.clearRect(0,0,oC.width,oC.height);

       for(var i=0;i<setArr.length;i++){
         //通过改变圆心的坐标来实现曲线运动
          setArr[i].num++;
          setArr[i].X=setArr[i].startX -2*Math.sin(setArr[i].num*Math.PI/180)*setArr[i].step;
          setArr[i].Y=setArr[i].startY- 3*(setArr[i].num*Math.PI/180)*setArr[i].step;
          if(setArr[i].Y<100){
          setArr.splice(i,1);
  }
}

       for( var i=0;i<setArr.length;i++){
         oGC.fillStyle = 'rgba('+setArr[i].c1+','+setArr[i].c2+','+setArr[i].c3+','+setArr[i].c4+')';
         oGC.beginPath();
         oGC.moveTo(setArr[i].X,setArr[i].Y);
          oGC.arc(setArr[i].X,setArr[i].Y,setArr[i].R,0,360*Math.PI/180);
         oGC.closePath();
         oGC.fill();

       }


     },1000/60);


     setInterval(function(){

       var x=Math.random()*oC.width;
       var y=oC.height-10;
       var r=Math.random()*6+2;
       var c1 = Math.round(Math.random()*255);
       var c2 = Math.round(Math.random()*255);
       var c3 = Math.round(Math.random()*255);
       var c4 = 1;
       var step=Math.random()*20+10;
       var num=0;
       var startX=x;
       var startY=y;

      setArr.push({
     
         X:x,
         Y:y,
         R:r,
         c1:c1,
         c2:c2,
         c3:c3,
         c4:c4,
         num:num,
         step:step,
         startX:x,
         startY:y


      });

     },100);




  }

</script>
```

效果示意图

canvas.gif

相关文章

  • canvas中的曲线运动

    一 :曲线运动 三角函数相信大家在高中都有接触过,比如 正弦、余弦、正切等。这里我就简单介绍下正弦函数的运动轨迹。...

  • PPT动画中的 曲线运动

    曲线运动相对直线运动给人的感觉更柔和,更自然。实际中,物体的运动轨迹也常是曲线的。在PPT动画里也可以实现曲线运动...

  • 小程序canvas实现签名

    这里使用获取canvas节点实现的,最新的api,小程序将canvas中的api变成了h5中使用canvas的那中...

  • 14-JS canvas 学习

    Canvas简介 canvas作用: canvas元素可以让用户在网页上绘制图形; canvas介绍 HTML5中...

  • ddu-canvas

    一、Canvas类android.graphics.Canvas Canvas类好比手机中的画纸,我们可以在Can...

  • 菠萝小记 | canvas图片问题汇总

    将图片插入到canvas中 图片加载完成再插入到canvas中 解决图片跨域问题 将canvas转成图片 附带解决...

  • AndroidUI常用类以及界面相关类

    1.android.graphic.Canvas Canvas类好比手机中的画纸,可以在Canvas上画图形或者图...

  • 5.1曲线运动的考点

    【考点1】:曲线运动及其位移 运动轨迹是曲线的运动叫曲线运动 位移公式 位移的方向与轴的夹角为,则 【考点2】:曲...

  • 使用 canvas 绘图的几种方法

    canvas 标签 要使用 canvas 绘图,需要现在HTML中定义一个画布。 canvas 元素本身没有绘图能...

  • canvas+图片 操作与转换

    加载图像到canvas画布中 var canvas = document.getElementById("myca...

网友评论

    本文标题:canvas中的曲线运动

    本文链接:https://www.haomeiwen.com/subject/xcuzsttx.html