偶然看到用代码画太极,感觉很有趣,用JS写了一个

过程很简单,画了张图,应该一看就懂了

代码也很简单,如下,注释很多

function TaiJi(r,canvas){
this.r = r;
this.ctx = canvas.getContext("2d"); var width = canvas.clientWidth, height = canvas.clientHeight;
this.ctx.translate( width/2, height/2);
} TaiJi.prototype.draw = function(){
var ctx = this.ctx;
var r = this.r; //一.画左边半个白圈
ctx.beginPath();
ctx.arc(0,0,this.r,1.5*Math.PI,0.5*Math.PI);
ctx.fillStyle = "#fff";
ctx.fill(); //二.右边单个黑圈
ctx.beginPath();
ctx.arc(0,0,r,0.5*Math.PI,1.5*Math.PI);
ctx.fillStyle = "#000";
ctx.fill(); //以半径的一半为新的半径,在中心线上下1/4处各画两个半圆
var r2 = r/2; //三.上边小半圆
ctx.beginPath();
//理论上只要半圆就好,不过如果实际只画半圆的话,不是很贴,会有一道不明显的细缝,所以画了整个圆
ctx.arc(0,-r2,r2,0,2*Math.PI);
ctx.fillStyle = "#fff";
ctx.fill(); //四.下边小半圆
ctx.beginPath();
//理论上只要半圆就好,不过如果实际只画半圆的话,不是很贴,会有一道不明显的细缝,所以画了整个圆
ctx.arc(0,r2,r2,0*Math.PI,2*Math.PI);
ctx.fillStyle = "#000";
ctx.fill(); //画两个“眼睛”,具体长度应该是多少我也不知道
//这里定为半径的1/5,看起来比较像了,不纠结了
//圆心就是三,四两步里面的圆心
var r3 = r / 5 //五.上方黑色“眼睛”
ctx.beginPath();
ctx.arc(0,-r2,r3,0,2*Math.PI);
ctx.fillStyle = "#000";
ctx.fill(); //六.下方白色“眼睛”
ctx.beginPath();
ctx.arc(0,r2,r3,0,2*Math.PI);
ctx.fillStyle = "#fff";
ctx.fill();
} //让太极旋转
TaiJi.prototype.rotate = function(interval){
var self = this;
setInterval(function(){
self.ctx.rotate( 0.5 * Math.PI/180);
self.draw();
},interval);
} /*****************************************/ var taiji = new TaiJi(200, document.getElementById('myCanvas') );
taiji.rotate(30);

  

效果如下,一个旋转的太极(看不到的可以更新浏览器了,程序员怎么能用这么老的浏览器):

后来无聊又改成了八卦

 

用javascirpt画个太极的更多相关文章

  1. Jave 鼠标点击画太极 PaintTaiji (整理)

    package demo; /** * Jave 鼠标点击画太极 PaintTaiji (整理) * 声明: * 又是一份没有注释的代码,而且时间已经久远了,不过代码很短,解读起来应该 * 不会很麻烦 ...

  2. html5+css3画太极并添加动画效果

    可兼容移动端视图 效果图如下:太极图是可以旋转的 具体实现如下: <!DOCTYPE html> <html lang="zh"> <head> ...

  3. 太极旋转-JS实现

    刚学了js的一些函数,所以做了一个太极的旋转.做完之后是上面这个样子的,是可以旋转的. 思路: 1.先做一个基准转盘,之后将元素都放在转盘上,跟随转盘动. 2.画两个半圆,主要属性是border-to ...

  4. CSS3绘制旋转的太极图案(一)

        实现步骤: 基础HTML: <div class="box-taiji"> <div class="circle-01">< ...

  5. html5--5-14 阶段小练习:绘制太极图案

    html5--5-14 阶段小练习:绘制太极图案 学习要点 运用前几节课的知识完成一个小练习 这个图案有多种不同的绘制方法,这里只做一个简单的演示,练习的时候可以自己思考一下,尝试其他的方法,或者对这 ...

  6. 一步一步教你用CSS画爱心

    今天小颖给大家分享一个用CSS画的爱心,底下有代码和制作过程,希望对大家有所帮助. 第一步: 先画一个正方形.如图: <!DOCTYPE html> <html> <he ...

  7. 参考bootstrap中的popover.js的css画消息弹框

    前段时间小颖的大学同学给小颖发了一张截图,图片类似下面这张图: 小颖当时大概的给她说了下,其实小颖也不知道上面那个三角形怎么画嘻嘻,给她说了DOM结构,具体的css让她自己百度,今天小颖自己参考boo ...

  8. H5坦克大战之【画出坦克】

    今天是个特殊的日子,圣诞节,也是周末,在这里先祝大家圣诞快乐!喜庆的日子,我们可以稍微放松一下,扯一扯昨天雷霆对战凯尔特人的比赛,这场比赛大威少又双叒叕拿下三双,而且是一个45+11+11的超级三双, ...

  9. MFC中如何画带实心箭头的直线

    工作中遇到话流程图的项目,需要画带箭头的直线,经过摸索,解决:思路如下: (1) 两个点(p1,p2)确定一个直线,以直线的一个端点(假设p2)为原点,设定一个角度 (2)以P2为原点得到向量P2P1 ...

随机推荐

  1. HTML5中video的使用一

    <!DOCTYPE html> <html> <head> <title>HTML5 </title> <meta http-equi ...

  2. 桦仔 笔记7-徐 SQLSERVER日志记录机制

    1 --SQLSERVER日志记录机制 2 --日志记录事务发生的时间,但是不保证记录下发起这个事务的用户名,更不记录发起者的程序名称!!! 3 USE AdventureWorks 4 CREATE ...

  3. Csharp多态的实现(接口)

    1.什么是接口 接口可以看做是一个标准, 所有继承的子类需要按照接口中声明的方法来 接口用关键字 interface 修饰,接口的名字一般是I.........able ,表示我有什么能力 接口一般是 ...

  4. [非技术参考]C#基础:使用Thread创建线程(1)

    Thread类可以创建和控制线程,Thread类的构造函数重载为接受ThreadStart和ParameterizedThreadStart类型的委托参数.下面我们用一个例子来解释怎样用Thread类 ...

  5. linux杂记(⑨)vi使用说明

    基本上vi共分为三种模式,分别是[一般模式]].[编辑模式]与[指令列命令模式].这三种模式的作用是: 一般模式:以vi处理一个档案的时候,一进来该档案就是一般模式.在这个模式中,你可以使用[上下左右 ...

  6. java中对于JSON 的处理 fastjson gson 系统自带的JSON 的选择

    从2月初到8月末,经历了一段痛苦的经历,现在总算感觉已经走出来了,经历那事之后 感觉对人与人之间的感情看的更透了,人也没那么浮躁了: 说实话 以前从来不知道鸟叫有多好听,现在突然觉的大自然真的很美,放 ...

  7. win7使用的一些误区以及困惑

    总结了一些新人在使用win7时容易产生的误区和困惑,罗列出来说明一下,以便新人能尽快适应新的操作系统. 1.内存使用的问题:这是个大误区,很多人都用xp时代的眼光来审视win7,这是错误的,因为两者的 ...

  8. Bluetooth 2.1+EDR是什么

    目前应用最为广泛的是 Bluetooth 2.0+EDR标准,该标准在2004年已经推出,支持Bluetooth 2.0+EDR标准的产品也于2006年大量出现.虽然Bluetooth 2.0+EDR ...

  9. ListView 行高设置不起作用

    通常我们在自定义listview的时候会遇到这个问题,我们设置了每行的layout的高度,但是没起作用,那是因为在adapter里面getview的时候出的问题,通常我们写: view = mInfl ...

  10. Codeforces Gym10008E Harmonious Matrices(高斯消元)

    [题目链接] http://codeforces.com/gym/100008/ [题目大意] 给出 一个n*m的矩阵,要求用0和1填满,使得每个位置和周围四格相加为偶数,要求1的数目尽量多. [题解 ...