html5中canvas 圆周运动和椭圆运动例子

一. 圆周运动

1.1 思路分析:

圆的方程为:

// (x0, y0)为圆心位置;(x, y)为圆上的点
(x - x0) ^ 2 + (y - y0) ^ 2 = r ^ 2
cos(angle) ^ 2 + sin(angle) ^ 2 = 1
因此,综合以上两式,可得:

x = r * cos(angle) + x0
y = r * sin(angle) + y0

因此,应用正弦函数计算y坐标,用余弦函数计算x坐标。

1.2 实例:

// cancelRequestAnimFrame的兼容函数
window.cancelRequestAnimFrame = ( function() {
    return window.cancelAnimationFrame ||
        window.webkitCancelRequestAnimationFrame ||
        window.mozCancelRequestAnimationFrame ||
        window.oCancelRequestAnimationFrame ||
        window.msCancelRequestAnimationFrame ||
        clearTimeout;
} )();

window.onload = function() {
    var canvas = document.getElementById("canvas"),
        context = canvas.getContext("2d"),
        ball = new Ball(2),
        angle = 0,
        centerX = canvas.width / 2,
        centerY = canvas.height / 2,
        radius = 50,
        speed = 0.05,
        timer = null;

        ball.lineWidth = 0;

    (function drawFrame() {
        timer = window.requestAnimationFrame(drawFrame, canvas);
        if(angle > Math.PI * 2 && timer) {
            window.cancelRequestAnimFrame(timer);
            timer = null;
        }
        // context.clearRect(0, 0, canvas.width, canvas.height);
        ball.y = centerY + Math.sin(angle) * radius;
        ball.x = centerX + Math.cos(angle) * radius;
        angle += speed;

        ball.draw(context);
    })();
}

二. 椭圆运动

2.1 思路分析:

椭圆的方程为:

// (x0, y0)为椭圆的圆心位置;(x, y)为椭圆上的点
[(x - x0) / radiusX] ^ 2 + [(y - y0) / radiusY] ^ 2 = 1
cos(angle) ^ 2 + sin(angle) ^ 2 = 1
因此,综合以上两式,可得:

x = radiusX * cos(angle) + x0
y = radiusY * sin(angle) + y0
由此可得出椭圆运动的坐标值。

2.2 实例:

// cancelRequestAnimFrame的兼容函数
window.cancelRequestAnimFrame = ( function() {
    return window.cancelAnimationFrame ||
        window.webkitCancelRequestAnimationFrame ||
        window.mozCancelRequestAnimationFrame ||
        window.oCancelRequestAnimationFrame ||
        window.msCancelRequestAnimationFrame ||
        clearTimeout;
} )();

window.onload = function() {
    var canvas = document.getElementById("canvas"),
        context = canvas.getContext("2d"),
        ball = new Ball(2),
        angle = 0,
        centerX = canvas.width / 2,
        centerY = canvas.height / 2,
        radiusX = 150,
        radiusY = 100,
        speed = 0.05,
        timer = null;

        ball.lineWidth = 0;

    (function drawFrame() {
        timer = window.requestAnimationFrame(drawFrame, canvas);
        if(angle > Math.PI * 2 && timer) {
            window.cancelRequestAnimFrame(timer);
            timer = null;
        }
        // context.clearRect(0, 0, canvas.width, canvas.height);
        ball.y = centerY + Math.sin(angle) * radiusY;
        ball.x = centerX + Math.cos(angle) * radiusX;
        angle += speed;

        ball.draw(context);
    })();
}

时间: 2024-07-31 13:32:17

html5中canvas 圆周运动和椭圆运动例子的相关文章

html5中canvas的一个简单的例子

买了两本关于HTML5的书,一本<HTML5揭秘>,一本<HTML5高级程序设计>,现在在看<html5揭秘>网上说这本书是非常入门的一本,<HTML5权威指南>就相对深一点.所以买了揭秘,没买指南.都说HTML5的canvas很重要,所以这里把书上关于canvas的一些简单例子,给试着自己写了一遍,放上来把  代码如下 复制代码 window.onload = function(){     var canvas = document.getElement

关于HTML5中Canvas的宽、高设置有关问题

关于HTML5中Canvas的宽.高设置问题 Canvas元素默认宽 300px, 高 150px, 设置其宽高可以使用如下方法:方法一:1 <canvas width="500" height="500"></canvas>方法二:使用HTML5 Canvas API操作 OK1 var canvas = document.getElementById('欲操作canvas的id');2 canvas.width = 500;3 canva

HTML5中Canvas(绘制)使用例子

Canvas中不仅可以画线(路径),还能画很多其他的图像,这一章就介绍Canvas的其他两种绘图API. 一.简单图形,整套的属性和方法专门用于绘制矩形: 1.fillStyle可以设置为CSS颜色.一个图案或一种颜色渐变.fillStyle默认是纯黑色,你可以设置成你喜欢的任意颜色.只要页面打开着,每个绘图上下文都会记录自己的属性,除非你重置过它. 2.fillRect(x,y,width,height)绘制一个矩形,并以当前的fillStyle来填充. 3.srtokeStyle和fillS

html5中canvas的使用 获取鼠标点击页面上某点的RGB

1.html5中的canvas在IE9中可以跑起来.在IE8则跑不起来,这时候就需要一些东西了. 我推荐这种方法,这样显得代码不乱. <!--[if lt IE9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> 需要谷歌的一个html5.js的文件即可. 注意:必须插入在<head></he

html5中Localstorage本地存储的例子

在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了.二者用法完全相同,这里以localStorage为例. if(window.localStorage){  alert('This browser supports localStorage'); }else{  alert('This browser does NOT supp

HTML5下canvas 制作绚丽钟表例子

html5之canvas的标签的使用,废话不多说,直接上代码: html部分: <body>  <canvas   id="canvas">   浏览器不支持CANVAS  </canvas> </body> 不用怀疑,就是这么简单,在html里面,好玩的在js里面 第一个辅助代码部分,仅仅只是标注0-9 十个数字和一个":"号,这样,一个电子钟表的所有元素都有了: digit =     [         [   

HTML5中Canvas的渐变色功能的例子

Canvas支持线性渐变填充,和放射性渐变填充.同时,这两种渐变形式都支持多种颜色混合. 1,线性渐变 (1)要创建线性渐变,我们需要给 createLinearGradient() 传入两个坐标点,分别表示渐变的起点和终点.起点和终点构成了颜色逐渐过渡的区间. var canvas = document.getElementById("myCanvas"); var context = canvas.getContext("2d");   //边框线条宽度 con

HTML5中Canvas的使用例子

通常使用<canvas>绘图时,后绘制的图形会覆盖在先绘制的图形上方,即遮住先绘制的图形.这是由于默认的合成操作时source-over.除了这种合成方式,还有其他许多合成方式告诉<canvas>怎么显示两个重叠的图形. 1,所有的合成操作及其效果 11种合成方式如下:source-over.source-in.soruce-out.source-atop.destination-over.destination-in.destination-out.destination-ato

HTML5中Canvas标签的学习

HTML5 提供了画布(canvas)标签,通过与Javascript结合使用,可以在网页上绘制图像.Canvas是一个矩形区域,使用Javascript可以控制其每一个像素.本文将对canvas标签进行简要的学习. 1.canvas标签说明 canvas标签是一个矩形区域,它包含两个属性width和height,分别表示矩形区域的宽和高,这两个属性都是可选的,并且都可以通过css来设定,他们的默认值是300px和150px.canvas在网页中的形式如下: <canvas id="myC