算法如下:

上面的图是正三角形:

说下算法,关于上面那些x,y是怎么算出来的。

这里大圆的5个顶点,每个顶点占用的角度为360/5 = 72度,左边那个18度是通过90 - 72 = 18度。

大圆半径为R,所以

x为cos(18度) * R

y为-sin(18度) * R

这个负是因为坐标y,是因为向下为正。

其他角度通过加72度就可以了!

下面来看下那个54度是怎么算的!

72 * 2 - 90 = 54度,同样半径为r

x为cos(54度) * r

y为-sin(54度) * r

其他角度通过加72度就可以了!

如果要旋转角度,只要画点时,每个点加一个对应的角度即可!

下面是代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><canvas id="canvas" style="border:1px solid #aaa;display:block;margin:50px auto;">当前浏览器不支持Canvas,请更换浏览器后再试
</canvas><script>window.onload = function() {let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");context.lineWidth = 10;drawStar(context, 150, 300, 400, 400, 0);}function drawStar(cxt, r, R, x, y, rot){cxt.beginPath();for(let i = 0; i < 5; i++){cxt.lineTo(Math.cos((18 + i * 72 - rot) / 180 * Math.PI) * R + x,-Math.sin((18 + i * 72- rot) / 180 * Math.PI) * R + y);cxt.lineTo(Math.cos((54 + i * 72 - rot) / 180 * Math.PI) * r + x,-Math.sin((54 + i * 72 - rot) / 180 * Math.PI) * r + y);}cxt.closePath();cxt.stroke();}
</script></body>
</html>

程序运行截图如下:

这里有一个要注意的,就是cos里面要传弧度,下面是度和弧度转换的格式:

1弧度=180/pai 度

1度=pai/180 弧度

canvas笔记-画一个五角星(含算法)相关推荐

  1. 案例四、1.使用Canvas画一个五角星

    在使用Cnavas元素画一个五角星时,最难的应该是五角星角的坐标. 首先在Canvas元素中,y轴是向下为正. 由于五角星有五个角,圆为360度,所以角与角之间的距离应该为72度. 此时的五角星的十个 ...

  2. python turtle库画一个五角星 【Python初学 绘制五角星】

    一.常用命令 import turtle #导入turtle库 import time #时间模块 turtle.forward() #向前移动 turtle.right() #顺时针旋转 turtl ...

  3. 五角星具有“胜利”的含义。被很多国家的军队作为军官(尤其是高级军官)的军衔标志使用。也常常运用在旗帜上。我们的国旗上就有五角星。请你也画一个五角星吧。

    五角星具有"胜利"的含义.被很多国家的军队作为军官(尤其是高级军官)的军衔标志使用.也常常运用在旗帜上.我们的国旗上就有五角星.请你也画一个五角星吧. [输入] 无 [输出] * ...

  4. 无聊画一个五角星玩玩

    无聊,画一个五角星玩玩 code      https://github.com/char0xface/five_pointed_star EXE 链接:https://pan.baidu.com/s ...

  5. python同切圆_画一组同切圆 画一组同心圆 画一个五角星 画一个黄色实心五角星 turtle.up() turtle.goto(0,-100) turtle.down() ...

    1.画一组同切圆 >>> import turtle >>> turtle.circle(10) >>> turtle.circle(15) &g ...

  6. canvas 画点_css+canvas 随便画一个星空

    今天躺在床上刷抖音的时候,看见了一个马克笔随便画星空的视频,很有意思. 先看效果: 开始需求分析: 1.渐变色的背景 2.画一颗树和一些草 3.水面的倒影 4.随便画点星星 5.画一颗流星 1.渐变色 ...

  7. 【Shader与ShaderToy 】画一个五角星

    写在前面 看了几篇关于用shadertoy画线与画点的文章之后,突然想自己做一个五角星的效果来练练手.但是想归想,动起手来还是充满了"坎坷".折腾了一个周末只是思路清晰,但代码却一 ...

  8. c语言课程设计台球厅系统,c语言画图用c语言画一个五角星和一个两周期 – 手机爱问...

    2013-11-23 怎么画出一个正五角星 尺规作图: 1.画一条水平线,通过此线上的任意点做一个圆 2.将圆规的一腿放在圆与直线的其一交点上,通过上述圆的圆心画半圆,并与之交两点.连接这两点做垂直线 ...

  9. python画一个五角星

    用python 画一个可爱的五角星,这是效果. 参考代码: from turtle import *color('red','yellow')screensize(800, 600, "bl ...

最新文章

  1. 百度ERNIE 2.0发布!16项中英文任务表现超越BERT和XLNet
  2. flask 创建基本模板
  3. ArcGIS for JavaScript 关于路径开发的一些记录(二)
  4. mysql实验6语言结构_实验六 SQL语言数据查询语言DQL.pdf
  5. 2050,一个属于年青人的大会
  6. 使用脚本在Linux服务器上自动安装Kubernetes的包管理器Helm
  7. 根据录入的计算公式计算_小规模纳税人增值税计算公式是什么,什么人能被称为小规模纳税人?- 理财技巧...
  8. 重学java基础第四课:关于教育和对大家的期望
  9. 轻快的VIM(三):删除
  10. repair filesystem 一般是什么引起的和该怎样解决
  11. 雷军微博念了几句诗 评论区疯狂猜谜
  12. 谈谈对象和XML文件的转换
  13. MOSEK安装教程及安装过程遇到的问题
  14. 编写自己的newman reporter
  15. Wireshark抓包体验
  16. 教育知识与能力-第一章教育基础知识和基本原理
  17. word在英文输入法的状态下,打出来的引号还是中文字符
  18. 爪哇国新游记之七----使用ArrayList统计水果出现次数
  19. MindManager 思维导图全面介绍
  20. 第九周 任务一

热门文章

  1. JavaScript将iframe中控件的值传到主页面控件中
  2. 想要 24 小时自学编程,那是不可能的,先自学 10000 小时再说!
  3. C++编程笔记:贪心算法实现部分背包问题
  4. FineReport 11.0 全新大屏模式,打开3D视界,大屏制作更快
  5. 如何用FineReport制作一张报表(一)
  6. 飞鸽传书是怎么就变成飞秋了的?
  7. 在不了解这5种语言以后就可能永远要消失在世界上了
  8. php curl登陆邮箱,php利用CURL函数登入163邮箱并获取自己的通讯录
  9. qt自带静态代码检测工具_两款静态代码检测工具的对比
  10. 管家婆打印自定义编辑_打印相关,人手一份!