canvas 五角星之回顾【初中三角函数】
2016-06-29 22:56
232 查看
当程序中遇到三角函数的时候我是懵逼的,于是百度了“初中三角函数”,
忘了这几个公式的,自己打脸。
目的是通过Canvas画一个五角星,
突破口:只要能通过给定的两个外圈点的半径,和内圈点的半径,借助上面的公式计算出每个五角星点的坐标。
主要代码如下:
【300】指的是外圈的半径
【150】指的是内圈的半径
封装成方法
忘了这几个公式的,自己打脸。
目的是通过Canvas画一个五角星,
突破口:只要能通过给定的两个外圈点的半径,和内圈点的半径,借助上面的公式计算出每个五角星点的坐标。
主要代码如下:
【300】指的是外圈的半径
【150】指的是内圈的半径
<canvas id="canvas" width="800" height="800"></canvas>
var cvs = document.getElementById("canvas"); var ctx = cvs.getContext("2d"); ctx.lineWidth = 2; ctx.beginPath(); for (var i = 0; i < 5; i++) { ctx.lineTo(Math.cos((18 + i * 72) / 180 * Math.PI) * 300 + 400, -Math.sin((18 + i * 72) / 180 * Math.PI) * r1 + 400); ctx.lineTo(Math.cos((54 + i * 72) / 180 * Math.PI) * 150 + 400, -Math.sin((54 + i * 72) / 180 * Math.PI) * r2 + 400); } ctx.closePath(); ctx.strokeStyle ="red" ctx.stroke();
封装成方法
function draw_star5(ctx , r1 , r2 , x , y , rot){ // r1 大圆半径,r2小圆半径,圆心坐标x,圆心坐标y,rot旋转角度(可无) 顺时针 ctx.beginPath(); for (var i = 0; i < 5; i++) { ctx.lineTo(Math.cos((18 + i * 72 - rot) / 180 * Math.PI) * r1 + x, -Math.sin((18 + i * 72 - rot) / 180 * Math.PI) * r1 + y); ctx.lineTo(Math.cos((54 + i * 72 - rot) / 180 * Math.PI) * r2 + x, -Math.sin((54 + i * 72 - rot) / 180 * Math.PI) * r2 + y); } ctx.closePath(); }
相关文章推荐
- 将Buffer对象结合创建为一个新的Buffer对象
- 易宝典文章——玩转Office 365中的Exchange Online服务 之二十八 怎样过滤病毒木马邮件
- 适配器模式 和 装饰模式 个人的理解笔记
- 五大常用算法之二:动态规划算法
- Android之 FLAG_ACTIVITY_CLEAR_TASK
- coos2d 类详细之 CCTextFieldTTF
- ios开发
- [Docker 入门--安装篇]阿里云ECS服务器Centos系统上安装docker
- HMM(隐马尔可夫模型)
- ipython 远程web server搭建
- Android Dagger2.0依赖注入详解(实例讲解)
- 【leetcode】14. Longest Common Prefix
- Buffer.byteLength(字符串,编码方式)计算指定字符串的字节数
- HTML <form> 标签的 action 属性
- Permission denied: user=Administrator, access=WRITE, inode="/aa/mytest10.txt":anne:supergroup:drwxr
- js中访问对象的方法
- JavaScript面向对象详解
- 从今天开始写博客,以此文章作纪念!!
- 五大常用算法之一:分治算法
- 面向对象的六大原则(Java、android基础)