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 相关文章推荐
jQuery 数据缓存data(name, value)详解及实现
Jan 04 Javascript
js 纯数字不重复排列的另类方法
Jul 17 Javascript
Javascript中级语法快速入手
Jul 30 Javascript
javascript显示系统当前时间代码
Dec 29 Javascript
vue快捷键与基础指令详解
Jun 01 Javascript
vue实现导航栏效果(选中状态刷新不消失)
Dec 13 Javascript
Vuex 进阶之模块化组织详解
Jan 12 Javascript
vue 路由嵌套高亮问题的解决方法
May 17 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
Feb 11 Javascript
jQuery 淡入/淡出效果函数用法分析
May 19 jQuery
通过实例解析vuejs如何实现调试代码
Jul 16 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新手上路(十四)
2006/10/09 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
微信小程序之批量上传并压缩图片的实例代码
2018/07/05 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
json跨域调用python的方法详解
2017/01/11 Python
Python读取properties配置文件操作示例
2018/03/29 Python
Python程序暂停的正常处理方法
2019/11/07 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
英语翻译系毕业生求职信
2013/09/29 职场文书
四年级下册教学反思
2014/02/01 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
学习保证书
2015/01/17 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server