p5.js绘制旋转的正方形


Posted in Javascript onOctober 23, 2019

使用p5.js绘制旋转的正方形,供大家参考,具体内容如下

要还原的效果图

p5.js绘制旋转的正方形

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

首先建立画布大小,按照比例应该是5:3

function setup() {
 createCanvas(500, 300);
}

设定矩形绘制格式,以及边线粗细

function setup() {
 createCanvas(500, 300);
 rectMode(100);
 strokeWeight(4);
}

让我们根据画布坐标先把静态的图形画出来

(关于颜色的rgb数据可以通过ps取色器获得)

只需要用到rect()进行绘制即可

p5.js绘制旋转的正方形

仔细观察可以发现,图中的矩形为圆角矩形,绘制圆角矩形可以直接在rect()里加入四个角的弧度
以左一黑色矩形为例

rect(77.5,122.5, 55, 55, [5], [5], [5], [5]);

[ ]里的则是每个角的圆角弧度,按顺序分别是左上,右上,左下,右下

经过修改后的图像

p5.js绘制旋转的正方形

目前基本图形已经构建好了,目前我们需要做的就是让他旋转起来
这里需要用到几个函数

translate()
rotate()

我们用translate()将旋转中心设定为矩形中心,再调用rotate()让图像旋转起来
但是我们会发现一个问题,经过设定后,启动程序,我们会发现整个图形进行了旋转,这并没有达到我们想要的效果,所以现在需要使用到push()和pop()两个函数将矩形分隔开来

push();
angle=angle+0.01;
let c=angle+PI;
translate(100,150);
rotate(c);
stroke(255,255,255);
fill(0,0,0);
rect(-22.5-22.5, 55, 55, [5], [5], [5], [5]);
pop();

运行即可让左边第一个矩形旋转起来。要介绍的是,angle后所加的数值(此处为0.01)所代表的含义为旋转速率的大小

如果需要反向旋转,将rotate()中的参数转换为负数即可

按照第一个矩形将另外三个矩形也更改过来,就可以得到图中的效果啦!

最后完成的效果↓

p5.js绘制旋转的正方形

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

Javascript 相关文章推荐
Javasipt:操作radio标签详解
Dec 30 Javascript
使用javascript做的一个随机点名程序
Feb 13 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
Apr 10 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
May 23 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
Nov 04 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
Dec 07 Javascript
在JavaScript中call()与apply()区别
Jan 22 Javascript
AngularJS前端页面操作之用户修改密码功能示例
Mar 27 Javascript
jQuery选择器之子元素过滤选择器
Sep 28 jQuery
vue component 中引入less文件报错 Module build failed
Apr 17 Javascript
详解Webpack抽离第三方类库以及common解决方案
Mar 30 Javascript
基于PHP pthreads实现多线程代码实例
Jun 24 Javascript
p5.js实现简单货车运动动画
Oct 23 #Javascript
p5.js实现故宫橘猫赏秋图动画
Oct 23 #Javascript
vue父组件给子组件的组件传值provide inject的方法
Oct 23 #Javascript
p5.js临摹旋转爱心
Oct 23 #Javascript
JavaScript 作用域scope简单汇总
Oct 23 #Javascript
node.js使用fs读取文件出错的解决方案
Oct 23 #Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 #jQuery
You might like
PHP安全防范技巧分享
2011/11/03 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
php实现微信发红包功能
2018/07/13 PHP
use jscript List Installed Software
2007/06/11 Javascript
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
Angular value与ngValue区别详解
2019/11/27 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
计算机专业应届生求职信
2014/04/06 职场文书
忠诚教育心得体会
2014/09/03 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android