• 旋转的太极图


    1.创建一个画布,获取canvas节点

     

    <canvas id="c" width="500" height="500"></canvas>//创建canvas节点
            <script type="text/javascript">
                var canvas = document.getElementById('c');
                var c = canvas.getContext('2d');//获取canvas对象
           <script>

     

    然后先设置定时器,在定时器中先位移canvas的起点,canvas的起点默认在画布的左上角(0,0)

     

    setInterval(()=>{
                    // 清空画布
                    c.clearRect(0,0,500,500);
                    c.save();//保存状态
                    
                    c.translate(250,250);//位移canvas的起点到画布的中心
                    
                    taiji();//然后调用taiji函数以起点在画布的中心画图
                    
                    c.restore()//恢复状态
                    
                },100);

    设置之后的起点在画图的中心

    然后开始在以(250,250)为起点的画布画静态的太极

    function taiji(){
                    // 绘制黑色半圆
                    c.beginPath();
                    c.arc(0,0,200,-0.5*Math.PI,0.5*Math.PI,true);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制白色半圆
                    c.beginPath();
                    c.arc(0,0,200,-0.5*Math.PI,0.5*Math.PI);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                    
                    // 绘制小白色半圆
                    c.beginPath();
                    c.arc(0,100,100,-0.5*Math.PI,0.5*Math.PI,true);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                    
                    // 绘制小黑色半圆
                    c.beginPath();
                    c.arc(0,-100,100,-0.5*Math.PI,0.5*Math.PI);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制黑色小圆
                    c.beginPath();
                    c.arc(0,100,30,0,2*Math.PI);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制白色小圆
                    c.beginPath();
                    c.arc(0,-100,30,0,2*Math.PI);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                }

    最后开始调用旋转

    // 太极旋转
                var i= 0;
                setInterval(()=>{
                    // 清空画布
                    c.clearRect(0,0,500,500);
                    c.save();//保存状态
                    c.translate(250,250);
                    // 旋转
                    c.rotate(Math.PI/180*i);
                    i+=5;
                    // taiji();
                    c.restore()//恢复状态
                    
                },100);
    image-20201111200313660

     

    最后附上完整的代码:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style type="text/css">
                #c {
                    background-color: #ccc;
                }
            </style>
        </head>
        <body>
            <canvas id="c" width="500" height="500"></canvas>
            <script type="text/javascript">
                var canvas = document.getElementById('c');
                var c = canvas.getContext('2d');
                function taiji(){
                    // 绘制黑色半圆
                    c.beginPath();
                    c.arc(0,0,200,-0.5*Math.PI,0.5*Math.PI,true);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制白色半圆
                    c.beginPath();
                    c.arc(0,0,200,-0.5*Math.PI,0.5*Math.PI);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                    
                    // 绘制小白色半圆
                    c.beginPath();
                    c.arc(0,100,100,-0.5*Math.PI,0.5*Math.PI,true);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                    
                    // 绘制小黑色半圆
                    c.beginPath();
                    c.arc(0,-100,100,-0.5*Math.PI,0.5*Math.PI);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制黑色小圆
                    c.beginPath();
                    c.arc(0,100,30,0,2*Math.PI);
                    c.closePath();
                    c.fillStyle='black';
                    c.fill();
                    
                    // 绘制白色小圆
                    c.beginPath();
                    c.arc(0,-100,30,0,2*Math.PI);
                    c.closePath();
                    c.fillStyle='white';
                    c.fill();
                }
                
                
                // 太极旋转
                var i= 0;
                setInterval(()=>{
                    // 清空画布
                    c.clearRect(0,0,500,500);
    c.save();//保存状态
    c.translate(250,250);
    // 旋转
    c.rotate(Math.PI/180*i);
    i+=5;
    // taiji();
    c.restore()//恢复状态
    
        },100);
    
    
    
    </script>
    </body>
    </html>

     

  • 相关阅读:
    201119西瓜书系列博客---5、神经网络
    GO结果画图
    Java调用R语言脚本
    CentOS 6,7 查看、修改时间时区
    eval 让shell脚本动态的构建命令
    shell脚本中awk命令内置参数与脚本参数冲突的解决方法
    Shell 传递参数
    clusterProfiler::enrichGO() is getting very slow
    R install("curl") on CentOS 7.6
    centos 7 安装 myclipse 2017 ci
  • 原文地址:https://www.cnblogs.com/ximenchuifa/p/13960675.html
Copyright © 2020-2023  润新知