本篇文章主要介绍了p5.js实现斐波那契螺旋的示例代码,现在分享给大家,也给大家做个参考。
本篇文章主要介绍了p5.js实现斐波那契螺旋的示例代码,分享给大家,也给自己做个笔记
效果如下:
主要方法
translate()
rotate()
arc()
斐波那契螺旋
斐波那契螺旋线也称“黄金螺旋”,是根据斐波那契数列画出来的螺旋曲线,以斐波那契数为边的正方形中画一个90度的扇形,连起来的弧线就是斐波那契螺旋。
草图
过程分解
一、定义一个空的斐波那契数组:
var fibonacci = [];
二、初始化
默认情况下draw()函数会无限重复绘图, framerate()函数可以设置每秒重复绘图的次数,就像电影每秒播放的帧数。
function setup(){
createcanvas(windowwidth, windowheight);//创建一块画板,画板的宽高与浏览器宽高相同
background(255);//设置背景颜色为白色
framerate(10);//设置每秒10帧
}
三、设置斐波那契螺旋的样式
function draw(){
...
stroke(0);//线条颜色为黑色
nofill();//无填充色
strokeweight(5);//线条宽度为5
translate(windowwidth/2, windowheight/2);//将坐标系移动到页面中央
...
}
四、开始绘制斐波那契螺旋
function draw(){
...
stroke(0);
nofill();
strokeweight(5);
translate(windowwidth/2, windowheight/2);
...
for( var i = 0; i < 20; i ++){//绘制20段90度弧线
var a = i <= 1 ? 1 : fibonacci[i-1] + fibonacci[i-2];
//这是条件表达式,如果i等于0或1,那么a等于1;否则等于斐波那契数列前两项的和
fibonacci.push(a);//将新得到的a加入斐波那契数列中
arc(0,0,a * 2,a * 2,0,pi / 2);//绘制圆心在(0,0)直径为2*a度数为90度的弧形
/**********以下是为下一段弧线做准备************/
rotate(pi / 2);//将坐标系按顺时针旋转90度
translate(-fibonacci[i-1],0); //将坐标系沿着x轴反向移动上一项的长度
}
}
五、让斐波那契螺旋动起来
function draw(){
background(255);//将背景设置成白色,“遮盖”之前的绘图
stroke(0);
nofill();
strokeweight(5);
translate(windowwidth/2, windowheight/2);
rotate(-pi / 6 * framecount);//每帧旋转30度,framecount表示当前已播放帧数
for( var i = 0; i < 20; i ++){
var a = i <= 1 ? 1 : fibonacci[i-1] + fibonacci[i-2];
fibonacci.push(a);
arc(0,0,a * 2,a * 2,0,pi / 2);
rotate(pi / 2);
translate(-fibonacci[i-1],0);
}
}
完整代码
var fibonacci = [];
function setup(){
createcanvas(windowwidth, windowheight);
background(255);
framerate(10);
}
function draw(){
background(255);
stroke(0);
nofill();
strokeweight(5);
translate(windowwidth/2, windowheight/2);
rotate(-pi / 6 * framecount);
for( var i = 0; i < 20; i ++){
var a = i <= 1 ? 1 : fibonacci[i-1] + fibonacci[i-2];
fibonacci.push(a);
arc(0,0,a * 2,a * 2,0,pi / 2);
rotate(pi / 2);
translate(-fibonacci[i-1],0);
}
}
function windowresized(){
resizecanvas(windowwidth, windowheight);
}
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
ajax 异步加载解析
ajax同步验证单号是否存在的方法
js+ajax处理java后台返回的json对象循环创建到表格的方法
以上就是p5.js实现斐波那契螺旋的示例代码的详细内容。