Ciao 访客, welcome back to old school! :p
void setup () { size(300, 300, P2D); background(0);}void draw() { for (int i=0;i<width;i++) { for (int j=0;j<height;j++) { stroke(random(255)); point(j,i); } }}
numbers[j] = random(100)*(numbers.length/100);
beginShape();curveVertex(xPos[0], yPos[0]);for (int i=0;i<xPos.length;i++) { curveVertex(xPos[i], yPos[i]);}curveVertex(xPos[15], yPos[15]);endShape();
@muddy关于第一个作业,效果可以,俺提一个建议:你可以试试看把渲染器改为P2D,运行速度为明显提高 : )另外我想知道,你这条代码为何要这样写,思路是啥?程序代码numbers[j] = random(100)*(numbers.length/100);第二个作业效果非常不错。代码也干净明了。第三个的vertex 连线其实你完全可以用for() 循环来完成的,代码如下。程序代码beginShape();curveVertex(xPos[0], yPos[0]);for (int i=0;i<xPos.length;i++) { curveVertex(xPos[i], yPos[i]);}curveVertex(xPos[15], yPos[15]);endShape();
float degree;float b, d, r;float[]xPos = new float[16];float[]yPos = new float[16];float[]z = new float[16];int i, j;void setup() { colorMode(HSB); rectMode(CENTER); frameRate(80); size(500, 500); background(255); noStroke(); noFill(); smooth(); r = 125; d = 1; b = 0.995; for (int i=0;i<z.length;i++) { z[i]=random(10); }}void draw() { translate(width/2, height/2); //fill(255, 30); //rect(0, 0, width, height); //stroke(0, 0, 0, 50); //strokeWeight(1); degree = -90; d *= b; fill(100+noise(10*z[j])*150, 125, 255); for (int j=0;j<xPos.length;j++) { xPos[j]=d*cos(radians(degree))*(r+noise(z[j])*100); yPos[j]=d*sin(radians(degree))*(r+noise(z[j])*100); degree += 12; z[j] += 0.01; } beginShape(); curveVertex(xPos[0], yPos[0]); for (int i=0;i<xPos.length;i++) { curveVertex(xPos[i], yPos[i]); } curveVertex(xPos[15], yPos[15]); endShape(); beginShape(); curveVertex(-xPos[0], yPos[0]); for (int i=0;i<xPos.length;i++) { curveVertex(-xPos[i], yPos[i]); } curveVertex(-xPos[15], yPos[15]); endShape(); if (yPos[15]<20 || yPos[15]>150) { b = 1/b; }}
//导入类库import ddf.minim.*;//声明初始角度,点的x/y位置,环的原始半径float degree;float xPos,yPos;float baseRadius;//声明player 与minim 对象AudioPlayer player;Minim minim;void setup(){ size(600, 600, P2D); //初始化minim 以及player minim = new Minim(this); player = minim.loadFile("groove.mp3",360); //让音乐循环播放(而不是像例子那样只播放一遍) player.loop(); //初始化原始半径 baseRadius = 200;}void draw(){ translate(width/2,height/2); background(0); stroke(255); for(int degree = 0; degree < 360; degree++){ //x = cos(cita)*r 而 y = sin(cita)*r,这里的r 由原始半径和音频共同决定,注意这个(baseRadius+(player.left.get(degree)+player.right.get(degree))*100) xPos = cos(radians(degree))*(baseRadius+(player.left.get(degree)+player.right.get(degree))*100); yPos = sin(radians(degree))*(baseRadius+(player.left.get(degree)+player.right.get(degree))*100); //绘制单个点 point(xPos,yPos); }}void stop(){ player.close(); minim.stop(); super.stop();}