Processing雁群实验

作者: 一石匠人 | 来源:发表于2018-10-11 15:17 被阅读15次

本文利用Processing完成一个3D随机渲染案例。由于最终动画效果像大雁群徘徊飞舞,我为其取名“雁群实验”。
为了简化说明,我们先用一个正方体旋转做说明,代码如下:


TIM截图20181011151543.jpg
float angle=0;
void setup() {
  size(500, 500, P3D);
  smooth();
}
void draw() {
  background(100);
  translate(width/2, height/2, 0);
  rotateY(angle/6);
  rotateX(angle/6);
  angle+=0.05;
  noFill(); 
  box(200, 200, 200);
}

效果如下:


5.gif

在上面案例中正方体的框架作为坐标范围,填充圆形(就是我们“大雁”),最终代码如下:

float angle=0;
void setup() {
  size(500, 500, P3D);
  smooth();
}
void draw() {
  background(100);
  translate(width/2, height/2, 0);
  rotateY(angle/6);
  rotateX(angle/6);
  angle+=0.05;
  noFill(); 
  box(200, 200, 200);
  translate(0, 0, -100);
  for (int i=0; i<=1000; i++) {
    drawCircle(10, random(-100, 100), random(-100, 100));
  }
}
void drawCircle(int r, float x, float y) {
  translate(0, 0, 0.2);//此处注意 0.2*上文循环的1000=Z轴上边长200
  fill(random(255));
  ellipse(x, y, r, r);
}

效果如下:


6.gif

此处应该注意一个问题:上文代码 translate(0, 0, 0.2)注意 0.2*上文循环的1000=Z轴上边长200。如果直接用 translate(0, 0, random(200))则会出差错,因为循环中的translate效果是叠加的。或者换种方式,在循环的末尾回归原来的坐标系,代码如下:

void myLine() {
  float aa=random(200);
  translate(0,0,aa);
  stroke(random(255));
  line(random(-100,100),random(-100,100),random(-100,100),random(-100,100));
  translate(0,0,-aa); //此处回归原来的坐标系
}

注释掉辅助边框,效果如下:


7.gif

换个颜色,效果如下:


9.gif
10.gif
“大雁”换成直线试试:
10.gif
float angle=0;
void setup() {
  size(500, 500, P3D);
}
void draw() {
  background(100);
  translate(width/2, height/2, 0);
  rotateX(angle/4);
  rotateZ(angle/4);
  rotateY(angle/4);
  angle+=0.1;
  noFill();
  stroke(0);
  box(200);
  translate(0,0,-100);
  for(int i=0;i<1000;i++){
    myLine();
  }
}
void myLine() {
  translate(0,0,0.2);
  stroke(random(255));
  line(random(-100,100),random(-100,100),random(-100,100),random(-100,100));
}

扩展:
在drawCircle()或者myLine()加入如下代码试试效果。

  rotateX(random(PI));
  rotateY(random(PI));
  rotateZ(random(PI));

相关文章

  • Processing雁群实验

    本文利用Processing完成一个3D随机渲染案例。由于最终动画效果像大雁群徘徊飞舞,我为其取名“雁群实验”。为...

  • Processing雁群实验(续)

    本文在前一篇《Processing雁群实验》进行延伸扩展,进行“实验性”探索。 本案例要点: (1)旋转复杂不规则...

  • Spark Structured Streaming2.3两种计

    micro-batches Processing & Continuous Processing Structur...

  • Fiori-like Prototype (Parallel P

    Parallel Processing. SAPSPTA Parallel Processing Framewor...

  • COMP9311 Database Systems WEEK11

    1.Query Processing query processing is the study of techn...

  • Annotations 1

    Annotations Processing 概念 Annotation processing-javac在编译时...

  • 雁群的逝去

    为了那个遥远而温暖的梦,我们不远万里的飞翔,追逐着水草丰美的天堂。 歇宿 飞了长长的一天,终于找到了一个能...

  • 群山与雁群

    图文/芳心可期 一直以来,我的画工并不精湛。但是我仍在坚持,今天偶然在抖音看到了一幅犹如仙境一般的画,简单大方,却...

  • 远去的雁群

    工作餐后,走上公司的楼顶。 抬头望一眼将要将要熄灭的白天,天色渐变。 在好高好高的淡淡的云下面,突然发现一排小黑点...

  • Processing笔记02—第一行代码

    Processing的开发环境「Processing Development Environment,缩写为PDE...

网友评论

    本文标题:Processing雁群实验

    本文链接:https://www.haomeiwen.com/subject/okebaftx.html