p5创意编程

p5.js是一套具有类似Processing编程语言的可视化JavaScript库,是当代Web的Processing,能够比得上甚至优于D3.js、EaselJS、Three.js、 Raphaël、 KineticJS、Paper.js、Famo.us,或者是Impact等类库。

p5.js有完整的一套画图功能,既可当作画图软件使用,也包括支持与各类页面元素交互的库。然而,开发者没有被限制自己的画布上,他们可以把整个浏览器 页面作为自己的素描区域。正因为如此,P5.js有一个插件库能够使得开发者非常容易地与其它HTML5对象(包括文本、输入、视频、网络摄像头和声音) 进行交互。

临摹作业
运动规律

小球从中间往外运动,运动到设定的终点之后就弹回
在这里插入图片描述
代码

function setup() {
  createCanvas(540, 540);
    noStroke();
    colorMode(HSB, 1);
}

var N = 16,
    n = 6;
var th, r, t;
var speed = 7e-4;

function draw() {
  background(220);
  t = (Date.now() * speed) % 1;
    console.log(t);
    background(0);
    push();
    translate(width / 2, height / 2);
    for (var i = 0; i < N; i++) {
        for (var j = 0; j < n; j++) {
            fill(i / N, 1, j / n);
            push();
            th = TWO_PI * i / N;
            rotate(th);
            r = 130 + 90 * cos(3 * th + TWO_PI * t +.065 * j);
            ellipse(r, 0, 10 + .5 * j, 10 + .5 * j);
            pop();
        }
    }
    pop();
}

拓展
旋涡
在这里插入图片描述

var ticker = void 0;
var positions = void 0;
var nrOfCircles = void 0;

function setup() {
    noFill();
    ticker = 0;
    positions = [];
    nrOfCircles = 200;
    for (var i = 0; i < nrOfCircles; i++) {
        addPosition();
    }
    createCanvas(windowWidth, windowHeight);
}

function addPosition() {
    var pos = getPosition();
    positions.unshift(pos);
    ticker += 0.01;
}

function getPosition() {
    var xOffset = (noise(ticker) - 0.5) * windowWidth * 0.5;
    var yOffset = (noise(ticker + 1000) - 0.5) * windowHeight * 0.5;
    return [xOffset, yOffset];
}

function draw() {
    clear();
    strokeWeight(1);
    translate(windowWidth / 2, windowHeight / 2);
    var m = max(windowWidth, windowHeight) * 1.8;
    var stepSize = m / nrOfCircles;
    var r = 1;
    positions.forEach(function(p) {
        ellipse(p[0], p[1], r, r);
        r += stepSize;
    });
    addPosition();
    positions.pop();
}

function drawCircle() {

}

function windowResized() {
    resizeCanvas(windowWidth, windowHeight);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值