[數(shù)學(xué)之美]利用p5js動態(tài)繪制花朵

create by dejavu



r = 5 (1 + sin(11 u / 5)) - 4 sin4(17 u / 3) sin8(2 cos(3 u) - 28 u)
 . . . where 0 <= u <= 21 pi


x = r cos(u)
y = r sin(u)
  • 利用以上公式可繪制二維平面上,如下的圖像



z的公式可以自定義
這里為了美觀利用如下式子
z = (r/20+.2)*sin(r*2*PI/7);
  • 將z帶入可以得到如下圖像


  • p5js 代碼

function setup() {
    createCanvas(1024,720,WEBGL);
}

var angle,beta = 0,0;
var rate = 40;
var z_rate=0.01;


function draw() {
    rotateY(angle);
    rotateZ(angle);

    var u = beta*21.0*PI/3000;
    var p4 = sin(17*u/3);
    var p8 = sin(2*cos(3*u)-28*u);
    var r = _rate*(5*(1+sin(11*u/5)) - 4*p4*p4*p4*p4 * p8*p8*p8*p8*p8*p8*p8*p8);

    var x = r*cos(u);
    var y = r*sin(u);
    var z = ((r*z_rate)*20+.2)*sin((r*z_rate)*(2*PI)/7);

    beta += 1;

    beginShape();
    fill(255,0,0);
    torus(0,0,0,0);
    for(var i=0;i<vec.length;i++) {
        vertex(vec[i][0],vec[i][1],vec[i][2]);
    }
    endShape();

}

原理---- 參考 paulbourke

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容