作者 主题: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2  (阅读 10529 次)

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
请大家以回帖的形式提交第一以及第二天的作业,附上代码和显示窗口的效果图。提交的作业我会在下节课(04/14/2012)前审阅完毕。 8)
« 最后编辑时间: 四月 07, 2012, 09:37:20 下午 作者 RavenKwok »

oncebjedi

  • Newbie
  • *
  • 帖子: 4
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #1 于: 四月 09, 2012, 07:10:06 下午 »
郭老师,上次的奇葩按钮代码如下


int wdt=100;
int hgt=50;
boolean btp=true;

void setup() {
  size(400, 400);
  background(255);
  smooth();
  frameRate(30);
  noStroke();
  fill(0);
}

void draw() {
    if (btp==true) {
      fill(255, 0, 255);
    }
    else {
      fill(0);
    }
    rect(200, 200, wdt, hgt);
}

void MousePressed() {
  if (mouseX>=200&&mouseX<=(200+wdt)&&mouseY>=200&&mouseY<=(200+hgt)) {
    btp=!btp;
  }
}

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #2 于: 四月 09, 2012, 07:24:07 下午 »
mousePressed......你'm'大写了阿亲...- -

oncebjedi

  • Newbie
  • *
  • 帖子: 4
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #3 于: 四月 09, 2012, 10:29:06 下午 »
 :oFML 老师看代码神速!

刚做了arc的练习,代码如下

程序代码

float diam;
float ellipseNoiseSeed;
float arcStart;
float arcEnd;
float arcNoiseSeed;
float xPos, yPos;

void setup() {
  size(400, 300);
  background(255);
  frameRate(30);
  smooth();
  noStroke();
  colorMode(HSB);
  ellipseMode(CENTER);
  ellipseNoiseSeed = random(10);
  arcNoiseSeed = random(10);
  diam = 20;
  yPos = xPos = diam/2;
}

void draw() {
  for(int i=0; i<20; i++) {
    for(int j=0; j<15; j++) {
      fill(noise(ellipseNoiseSeed)*360, 160, 255);
      ellipse(xPos+diam*i, yPos+diam*j, diam, diam);
      arcStart = random(0,2);
      arcEnd = random(0,2);
      arcStart = constrain(arcStart, 0, arcEnd);
      fill(noise(arcNoiseSeed)*360, 255, 255);
      arc(xPos+diam*i, yPos+diam*j, diam , diam, arcStart*PI, arcEnd*PI);
      ellipseNoiseSeed += 1;
      arcNoiseSeed += 1;
    }
  }
  noLoop();
}

void mousePressed() {
  ellipseNoiseSeed = random(10);
  arcNoiseSeed = random(10);
  loop();
}
 

效果图 :o


上次另外一个躲避球作业让我再想想

PS玩论坛好复古!

oncebjedi

  • Newbie
  • *
  • 帖子: 4
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #4 于: 四月 09, 2012, 11:22:10 下午 »
grainy screen
我坦白我不小心看到了上次作业的代码

程序代码
import processing.opengl.*;

void setup() {
  size(400, 400, OPENGL);
}

void draw() {
  for (int i=0; i<width; i++) {
    for (int j=0; j<height; j++) {
      stroke(random(255));
      point(i,j);
    }
  }
}

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #5 于: 四月 11, 2012, 10:50:28 上午 »
arc 那个作业其实可以再申明一个cols 和rows 的整形值变量来指定矩阵的大小,而且可以通过场景宽度和高度除以圆的直径来动态获得cols 和rows,也就是说每次改变场景大小,矩阵都会填充满整个场景。

另外,可以试着把ellipseNoiseSeed,arcNoiseSeed 的增量再减小些,效果会更好一些 :)

俺直接上代码了。

程序代码

float diam;
float ellipseNoiseSeed;
float arcStart;
float arcEnd;
float arcNoiseSeed;
float xPos, yPos;
int cols, rows;

void setup() {
  size(1200, 720);
  background(255);
  frameRate(30);
  smooth();
  noStroke();
  colorMode(HSB);
  ellipseMode(CENTER);
  ellipseNoiseSeed = random(10);
  arcNoiseSeed = random(10);
  diam = 16;
  yPos = xPos = diam/2;
  rows = ceil(height/diam);
  cols = ceil(width/diam);
}

void draw() {
  background(255);
  for(int i=0; i<cols; i++) {
    for(int j=0; j<rows; j++) {
      fill(noise(ellipseNoiseSeed)*360, 160, 255);
      ellipse(xPos+diam*i, yPos+diam*j, diam, diam);
      arcStart = random(0,PI);
      arcEnd = random(0,2*PI);
      arcStart = constrain(arcStart, 0, arcEnd);
      fill(noise(arcNoiseSeed)*360, 255, 255);
      arc(xPos+diam*i, yPos+diam*j, diam-2, diam-2, arcStart*PI, arcEnd*PI);
      ellipseNoiseSeed += 0.05;
      arcNoiseSeed += 0.05;
    }
  }
  noLoop();
}

void mousePressed() {
  ellipseNoiseSeed = random(10);
  arcNoiseSeed = random(10);
  loop();
}



RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #6 于: 四月 11, 2012, 11:13:56 上午 »
哈哈,论坛作为信息保留和交流分享的平台其实还是不错的。话说你雪花屏那个开OPENGL模式的想法是什么?

oncebjedi

  • Newbie
  • *
  • 帖子: 4
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #7 于: 四月 11, 2012, 09:08:09 下午 »
因为渲染速度慢。。。 :o

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #8 于: 四月 11, 2012, 11:25:00 下午 »
使用P2D试试 :)

losangel9

  • Newbie
  • *
  • 帖子: 1
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #9 于: 四月 12, 2012, 04:16:19 下午 »
好的 会试试看

Redshoes

  • Newbie
  • *
  • 帖子: 17
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #10 于: 四月 19, 2012, 12:15:21 下午 »
Raven 你好 day2的最后一个作业做来做去只做成这样

请问需要用到bezier曲线么?你的图是左右对称的吧,怎么做到那种一层层往里面缩小的效果的呢? :'(

程序代码
float factor = 100;
float r,rRange;
float xPos,yPos;

void setup(){
  size(500,500);
  background(100);
  strokeWeight(1);
  stroke(255);
  frameRate(1);
  smooth();
  rRange = 350;
}

void draw(){
  translate(width/2,height/2);
  fill(random(255),random(255),random(255));
  beginShape();
  for(int degree = 0;degree<360;degree++){
  r = noise(factor)*rRange;
  xPos = cos(radians(degree))*r;
  yPos = sin(radians(degree))*r;
  factor += 0.05;
  curveVertex(xPos,yPos);
  }
  endShape(CLOSE);
  rRange -= 1 ;
}

呃,之后又看了你的博客,去查了那个代码,可是那个是x y轴都对称的。。只有y轴对称还是不会画,我可能太笨了。。。可以大体讲一下吗?一维二维三维noise生成的数字有什么区别呢?谢谢~~~~
« 最后编辑时间: 四月 20, 2012, 02:05:14 下午 作者 Redshoes »

Redshoes

  • Newbie
  • *
  • 帖子: 17
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #11 于: 四月 23, 2012, 10:18:31 上午 »
已经自己做出来啦,嘿嘿

Redshoes

  • Newbie
  • *
  • 帖子: 17
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #12 于: 四月 23, 2012, 10:55:31 上午 »
还是做错了。。。。

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: [ 作业提交 ] P5 Intro Course (03/24/2012 & 04/07/2012) DAY1 & DAY2
« 回复 #13 于: 四月 25, 2012, 03:08:26 下午 »
@Redshoes

不好意思,很久没来看这个版块了。

各种维度的noise() 得到的值都是在0-1之间。

另外,你的r可以分为两块操作,一块是noiseR(控制自然的浮动),另一块是baseR(控制整体的大小)。

noiseR = (noise(factor)-0.5) * noiseRange;
baseR --;
r = baseR+noiseR;

这样的话,整个图形既有缩小的趋势,也会有比较明显的波动效果 :)

Tags: