p5.js临摹旋转爱心(2)

第一到四层的旋转
第一到四层的旋转与第五层一致,修改传入参数即可。
其实RotateCubes()的内容是一致的,最后返回一个theta。但当我为theta赋值后return(如下图),产生效果发生错误 ,分配数据发生错误。第一次接触p5.js,感觉代码写得比较冗余,后续学习中优化。

p5.js临摹旋转爱心

以上,即完成了对原图的临摹。

拓展作品

让立方体的大小随帧数变化,90帧一循环。

p5.js临摹旋转爱心

随帧数增加,深粉立方体变小,浅粉立方体变大。并在一瞬间,深粉立方体和浅粉立方体大小相同,形成一个完整的爱心。

p5.js临摹旋转爱心

if(frameCount%200>=0&&frameCount%200<=99) //扩展作品2 { size1=frameCount%100*0.02; size2=(100-frameCount%100)*0.02; size3=frameCount%100*0.02; size4=(100-frameCount%100)*0.02; size5=frameCount%100*0.02; size6=(100-frameCount%100)*0.02; } if(frameCount%200>=100&&frameCount%200<=199) { size1=(100-frameCount%100)*0.02; size2=frameCount%100*0.02; size3=(100-frameCount%100)*0.02; size4=frameCount%100*0.02; size5=(100-frameCount%100)*0.02; size6=frameCount%100*0.02; }

体会:

三维图形比起二维图像要多一个z参数,所以在排布位置的时候难度增大,且translate()函数的参数是偏移量,又为图形绘制增加了难度。

本GIF又一难点在于运动规律不能用肉眼直接获得,需要把GIF分解到每一帧,逐帧观察。运动规律相对复杂,且每一层运动规律都不同,需要控制的变量较多。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/96e9cdf33b31a74a6399dc361572bb38.html