p5.js入门教程和基本形状绘制


Posted in Javascript onMarch 15, 2018

一、什么是p5.js

最近接触了一门数字媒体艺术类的课程,名为Interactivity,教的是p5.js。

主讲老师就是开发者之一……还是挺激动的。

p5.js是一个为艺术家、设计师而开发的Javascript库,可以看作是Processing的Web版本。如果有Processing学习经验的话,p5.js上手会非常快。

至于p5.js有什么用,这个问题很难回答,因为我本身也是个初学者。

我目前觉得p5.js是一个很好的激发创意的工具,并且你可以将p5.js的内容嵌入网页,让你的网站更炫。

二、使用p5.js

p5.js拥有在线的代码编辑器,网址如下:

http://alpha.editor.p5js.org/

左边输入代码,点击运行按钮,就可以在右边看到代码运行效果。

你可以注册一个p5.js帐号,每次你的代码都可以保存在官方网站,无论是修改、测试或展示都十分方便。

下图是用ellipse()函数画了一个圆:

p5.js入门教程和基本形状绘制

三、上手p5.js

当你新建了一个p5.js工程后,便会生成以下的代码:

function setup() { //setup函数,每次程序开始运行时执行一次,用于初始化。 
 createCanvas(400, 400);//生成一个400x400的画布 
}  
function draw() { //draw函数,每秒运行60次,不断地在画布上绘制图形 
 background(220);//绘制背景,颜色为RGB(220,220,220) 
}

p5.js程序总是从setup()开始执行,执行过一次setup()后,便进入draw()函数的不断循环调用。

可以发现,语法和JavaScript并没有什么太大的不同,只是多了很多特殊的函数以供调用罢了。

四、绘制基本图形

在p5.js中,绘制图形是件很容易的事情,有很多相关函数:

function setup() {  
 createCanvas(400, 400); 
}  
 
function draw() {  
 background(220); 
  ellipse(100,100,100,100);//绘制椭圆(x,y,宽,高) 
  triangle(150,150,150,200,200,200);//绘制三角形(x1,y1,x2,y2,x3,y3) 
  quad(180,100,200,150,270,150,250,100);//绘制四边形(x1,y1,x2,y2,x3,y3,x4,y4) 
  rect(30, 20, 50, 50);//绘制矩形(x,y,宽,高) 
  line(0,0,100,100);//绘制线段(x1,y1,x2,y2)起点至终点 
  arc(200, 50, 50, 50, 0, HALF_PI);//绘制弧(x,y,宽,高,起始角度,终止角度) 
}

效果如下图所示:

p5.js入门教程和基本形状绘制

当然,线条色和填充色都是可以替换的,也可以修改线条粗细:

function setup() {  
 createCanvas(400, 400); 
}  
 
function draw() {  
 background(220); 
   
  stroke(255,128,128); 
  strokeWeight(5); 
  fill(255,200,0); 
  ellipse(100,100,100,100); 
  triangle(150,150,150,200,200,200); 
   
  noStroke(); 
  fill(100,255,0); 
  quad(180,100,200,150,270,150,250,100); 
  rect(30, 20, 50, 50); 
   
  stroke(0); 
  line(0,0,100,100); 
  arc(200, 50, 50, 50, 0, HALF_PI); 
}

效果如下图所示:

p5.js入门教程和基本形状绘制

五、查阅Reference

p5.js提供了许多函数用来进行创作,并且许多函数都有多种重载函数,这里不一一讲解。

p5.js官网提供了Reference,对每一种函数都进行了详细的解释,可以通过查阅这些函数的用法来进一步学习p5.js,网址如下:

https://p5js.org/reference/

p5.js入门教程和基本形状绘制

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
excel操作之Add Data to a Spreadsheet Cell
Jun 12 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
May 15 Javascript
jquery实现的图片点击滚动效果
Apr 29 Javascript
jQuery实现的向下图文信息滚动效果
May 03 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
Mar 08 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
Mar 31 Javascript
微信小程序自定义tab实现多层tab嵌套功能
Jun 15 Javascript
解决angularjs中同步执行http请求的方法
Aug 13 Javascript
深入理解react-router 路由的实现原理
Sep 26 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
Mar 07 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
Mar 15 #Javascript
vue之浏览器存储方法封装实例
Mar 15 #Javascript
vue实现提示保存后退出的方法
Mar 15 #Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
Mar 15 #Javascript
vue-cli创建的项目,配置多页面的实现方法
Mar 15 #Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
Mar 15 #Javascript
iview中Select 选择器多选校验方法
Mar 15 #Javascript
You might like
php中http_build_query 的一个问题
2012/03/25 PHP
php删除数组元素示例分享
2014/02/17 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
基于JS代码实现实时显示系统时间
2016/06/16 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
pandas object格式转float64格式的方法
2018/04/10 Python
python生成ppt的方法
2018/06/07 Python
Python根据成绩分析系统浅析
2019/02/11 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
谈谈python垃圾回收机制
2020/09/27 Python
python中二分查找法的实现方法
2020/12/06 Python
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
感恩祖国演讲稿
2014/09/09 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
MySQL transaction事务安全示例讲解
2022/06/21 MySQL