偶然看到用代码画太极,感觉很有趣,用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. 权威指南学习心得-浏览器中的js

    window对象:表示web了浏览器的一个窗口或窗体(winow属性引用自身) 含有以下属性:location包含Location对象,指定当前显示在窗口中URL,允许脚本往窗口里载入新的URL 含有 ...

  2. SQL学习之汇总数据之聚集函数

    一. 1.我们经常需要汇总数据而不用把他们实际检索出来,为此SQL提供了专门的函数,以便于分析数据和报表生成,这些函数的功能有: (1)确定表中行数(或者满足单个条件或多个条件或包含某个特定值的行数) ...

  3. AlarmManager类的应用

    1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...

  4. log4j.xml配置示例

    这是log4j1.x版本讲解,log4j-1.2.16.jar    1. 一般的log4j.xml的两种配置方式: 1.Logger 完成日志信息的处理定义输出的层次和决定信息是否输出DEBUG&l ...

  5. vs 中 vim vax 快捷键

    高效率移动 在插入模式之外 基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面VIM就像一个“哑巴”编辑器一样.很多新手都会一直呆在插入模式里面,因为这样易于使用.但VIM的强大之处在于 ...

  6. ROS理解roslaunch命令

    roslaunch命令从launch文件中启动一个节点,它的使用方法如下: roslaunch [package] [filename.launch] 首先切换到beginner_tutorials文 ...

  7. 常用笔记: 与VBS当中的Mid()类似的substr()小记

    VBS当中有Mid函数,一般形式为:Mid(str,start,len)   对应于JS就类似于:str.substr(start,len) 不过区别的是:VBS中start从1开始,而JS从0开始. ...

  8. python读取word表格内容(1)

    1.首页介绍下word表格内容,实例如下: 每两个表格后面是一个合并的单元格

  9. 贪吃蛇AI

    贪吃蛇AI 作者:CodeNoob 转载请标明作者和出处 序言 前几天在网上看到一张让人涨姿势的图片,这张图片我很早以前看过,当时就觉得肯定是程序实现的,只是当时还比较渣,不会算法.这次学了java也 ...

  10. oralce dubugs

    1,The listener supports no services 2,invalid specification for system parameter LOCAL_LISTENER crea ...