第一种方法

代码实现的一种方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>使用桃心形方程绘制爱心</title>
</head>
<body>
<canvas></canvas>
<script>
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var Heart = function(x, y) {
this.x = x;
this.y = y;
this.vertices = [];
for(let i=0; i<30; i++) {
var step = i / 30 * (Math.PI * 2);//设置心上面两点之间的角度,具体分成多少份,好像需要去试。
var vector = {
x : (15 * Math.pow(Math.sin(step), 3)),
y : -(13 * Math.cos(step) - 5 * Math.cos(2 * step) - 2 * Math.cos(3 * step) - Math.cos(4 * step))
}
this.vertices.push(vector);
}
}
Heart.prototype.draw = function() {
ctx.translate(-1000,this.y);//这一步跟ctx.shadowOffsetX必须一起使用,不明白为啥?
ctx.beginPath();
for(let i=0; i<30; i++) {
var vector = this.vertices[i];
ctx.lineTo(vector.x, vector.y);
}
ctx.shadowColor = "red";
ctx.shadowOffsetX = this.x+1000;
ctx.fill();
}
canvas.onmousedown = function(e) {
var x = e.offsetX;
var y = e.offsetY;
var heart = new Heart(x, y);
heart.draw();
}
</script>
</body>
</html>登录后复制
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!
相关教程推荐
- 基于HTML5陀螺仪实现移动动画效果
- H5的服务器推送事件详解
- Canvas实现旋转风车的绘制
- H5的拖放功能详解
- html5新增加的标签有哪些
- H5添加语音输入功能
- H5最全面解读
- 怎样用H5Canvas实现3D动态Chart图表
- 关于老版本的浏览器不兼容H5和C3的处理方法
- html5中重新加载音频/视频元素的方法load()
- 利用Html5实现文件异步上传功能代码实例
- 常用的<meta>代码整理汇总
- JS之原生数组splice方法实例
- 如何解决滚动条样式问题
- Vue.directive()的图文详解
- Vue.directive的自定义指令详解
- 在H5页面中怎样调用APP
- html5不常用标签可以怎么使用?
- html5是什么意思
- html5编辑器有哪些
其他课程推荐
- MacOS环境下Redis安装
- mac sequel连接mysql
- Mac忘记mysql数据库登录密码
- Mac - MySQL
- Mac系统如何清理mysql
- mac下设置redis开机自启
- 在macos上安装一个mysql (不用brew)
- 停止安装macports的mysql守护进程
- 如何通过终端在Mac上获取MySQL的端口?
- mac下安装oracle客户端
- python – 在mac上安装MySQLdb
- 在Markdown / Macdown编辑器中格式化MySQL代码
- Mysql将int转换为MAC
- mac下安装nginx+php+mysql
- mac上一键配置和安装adb驱动或者环境
- mac 快速启动postgresql
- mac下安装MYSQL-python
- java下radomAccessFile文件写入读取
- install mongodb on macos
- Mac 安装phpmyadmin提示无法登陆 mysql服务器解决办法