网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的范文:

 

标题 HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
范文
    这篇文章主要介绍了HTML5 Canvas实现玫瑰曲线和心形图案的代码实例,需要的朋友可以参考下
    效果图:
    名单
    名单
    提示:把代码复制到一个html文件中并保存,直接打开即可看到效果。
    实现代码:
    代码如下:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset = "gbk">
    <title>HTML5 Demo</title>
    <style type="text/css">
    #apDiv1 {
    position:absolute;
    width:120px;
    height:300px;
    z-index:1;
    left: 840px;
    top: 80px;
    }
    </style>
    </head>
    <body>
    <canvas id="canvas" width="800" height="600">
    Your browser does not support the canvas element. </canvas>
    <div id="apDiv1">
    <form>
    玫瑰曲线方程:
    r=a+bsin(m/n*x)
    选择参数:
    m: <input type="number" name="m" min="2" max="29" value="29"/>
    n: <input type="number" name="n" min="1" max="12" value="11"/>
    a: <input type="number" name="a" min="0" max="5" value="1"/>
    b: <input type="number" name="b" min="1" max="7" value="5"/>
    <input type="button" value=" 画 图 " onClick="draw();">
    <hr>
    <input type="button" value=" 画 图 2 " onClick="draw2();">
    <hr>
    <input type="button" value=" 心形图 " onClick="draw3();">
    </form>
    </div>
    <script type="text/javascript">
    function draw() {
    var ctx = document.getElementById('canvas').getContext('2d');
    ctx.save();
    ctx.translate(400,300);
    ctx.clearRect(-400,-300,800,600);
    ctx.strokeStyle = "#cc0000";
    var a = 0, b = 1, m = 6, n = 1;
    m = document.forms[0].m.value;
    n = document.forms[0].n.value;
    a = document.forms[0].a.value;
    b = document.forms[0].b.value;
    drawRose(ctx,a,b,m,n);
    ctx.restore();
    }
    function drawRose(ctx,a,b,m,n){
    ctx.beginPath();
    var e = 0, c = 120;
    var k = 2 * Math.PI / 360;
    do {
    var r = a/b + Math.sin( m * e / n * k);
    r = r * c;
    var x = r * Math.cos( e * k );
    var y = r * Math.sin( e * k );
    e += 0.1;
    ctx.lineTo(x,y);
    } while ( e <= 4320 );
    ctx.stroke();
    }
    function draw2(){
    var ctx = document.getElementById('canvas').getContext('2d');
    ctx.save();
    ctx.translate(400,300);
    ctx.clearRect(-400,-300,800,600);
    ctx.strokeStyle = "#cc0000";
    ctx.beginPath(); //ctx.moveTo(0,0);
    var e = 0, c = 150;
    var k = 2 * Math.PI / 360;
    do {
    x = 150*Math.cos( 5/2 * e*k ) + 50*Math.cos( 15/16 * 5/2 * e*k );
    y = 150*Math.sin( 5/2 * e*k ) - 50*Math.sin( 15/16 * 5/2 * e*k );
    e += 0.1;
    ctx.lineTo(x,y);
    } while ( e <= 3600 );
    ctx.stroke();
    ctx.restore();
    }
    function draw3(){
    var ctx = document.getElementById('canvas').getContext('2d');
    ctx.save();
    ctx.translate(400,300);
    ctx.clearRect(-400,-300,800,600);
    ctx.strokeStyle = "#ff0000";
    ctx.beginPath();
    var x = 1, y;
    do {
    y = -80*(Math.sqrt(1-x*x) + Math.pow(x*x,1/3));
    x -= 0.001;
    ctx.lineTo(100*x,y);
    } while ( x >= -1 );
    do {
    y = 80*(Math.sqrt(1-x*x) - Math.pow(x*x,1/3));
    x += 0.001;
    ctx.lineTo(100*x,y);
    } while ( x <= 1 );
    ctx.closePath();
    var grad = ctx.createRadialGradient(-40,-60,10,-40,-40,200);
    grad.addColorStop(0, "#ffcc00");
    grad.addColorStop(1, "#ff0000");
    ctx.fillStyle = grad;
    ctx.fill();
    // ctx.stroke();
    ctx.restore();
    }
    window.onload = function (){
    draw();
    }
    </script>
    </body>
    </html>
随便看

 

在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/12 23:01:03