《春·蜂》processing下的动画技术交互应用

《春·蜂》动画交互系统设计利用processing,模拟蜜蜂群体、花朵绽放、蜂巢生长等春天景象,结合细胞自动机和力导向算法,实现动态效果。通过交互动画,观众可体验更丰富的视觉效果。
摘要由CSDN通过智能技术生成

《春·蜂》

春回大地,万物复苏,一切开始恢复生机。《春·蜂》动画交互系统设计从春天主题出发,参考《代码本色》中某些章节的理论,利用细胞自动机、向量、基本作用力(主要是重力)、分形、数组行列式等,创作出模拟蜜蜂群体飞舞、树枝随风摇曳、蜜蜂蜂巢生长变化、花朵绽放、蜂蜜下降速度随高度改变等特效,并加入了交互操作,使系统变化更加多样,体验更加丰富有趣。
在这里插入图片描述

代码绘制蜂巢

在这里插入图片描述

绘制简单六边形,选择蜂巢时,鼠标位置颜色加深。因此可以设置两层蜂巢,设置不同的颜色以及透明度。代码如下:

int radius = 20;
float angle = TWO_PI / 6;

 void setup() {
   
  size(640, 640);
  background(255);
  noCursor();
}

void draw() {
   
  stroke(#ffcc00);
  // vary the width - start just off the screen so we don't have black edges
  for (float centy = -50+6*radius/4; centy < width+100; centy += radius*3) {
    // offset three times to skip a row
    for (float centx = 0; centx < width+100; centx += sqrt(3)/2 * 2*radius) {
   
      beginShape();
      if (mouseX > centx - radius && mouseX < centx + radius &&
       mouseY < centy + radius && mouseY > centy - radius) {
   
        fill( #ff9900);
      } else {
   
        fill( #ffff66, 30);
      }
      for (float a = PI/6; a < TWO_PI; a += angle) {
   
        float vx = centx + cos(a) * radius;
        float vy = centy + sin(a) * radius;
        vertex(vx, vy);
     };
     endShape(CLOSE);
    };
  }

  for (float centy = -50; centy < height+100; centy+= radius*3) {
   
    for (float centx = sqrt(3)/2 * radius; centx < width+100; centx += sqrt(3)/2 * 2*radius) {
   
      beginShape();
      if (mouseX > centx - radius && mouseX < centx + radius &&
       mouseY < centy + radius && mouseY > centy - radius) {
   
        fill( #ff9900);
      } else {
   
        fill( #ffff66, 30);
      }
      for (float a = PI/6; a < TWO_PI; a += angle) {
   
        float vx = centx + cos(a) * radius;
        float vy = centy + sin(a) * radius;
        vertex(vx, vy);
     };
      endShape(CLOSE);
    }
  }    
}

绽放的分形花

在这里插入图片描述
“分形艺术"不同于普通的"电脑绘画”,普通的"电脑绘画"概念是用电脑为工具从事美术创作,创作者要有很深的美术功底,且作品的创作几乎完全依赖于作者的个人意愿。而"分形艺术"则是利用分形几何学原理,借助计算机强大的运算能力,将数学公式反复迭代运算,再结合作者的审美及艺术性的塑造,从而将抽象神秘的数学公式变成一幅幅精美绝伦的艺术画作。
线性分形又称为自相似分形。自相似原则和迭代生成原则是分形理论的重要原则。它表征分形在通常的几何变换下具有不变性,即标度无关性。由自相似性是从不同尺度的对称出发,也就意味着递归。分形形体中的自相似性可以是完全相同,也可以是统计意义上的相似。标准的自相似分形是数学上的抽象,迭代生成无限精细的结构,如科赫曲线(Koch snowflake)、谢尔宾斯基地毯(Sierpinski carpet)等。这种有规分形只是少数,绝大部分分形是统计意义上的无规分形。根据自相似性的程度,分形可以分为有规分形和无规分形,有规分形是指具体有严格的自相似性,即可以通过简单的数学模型来描述其相似性的分形,比如三分康托集、Koch曲线等;无规分形是指具有统计学意义上的自相似性的分形,比如曲折连绵的海岸线,漂浮的云朵等。
《春·蜂》中的分形花利用更新像素点的方法,实现了一步一步绘制分形花的动画效果,代码如下:

int widt, heigh;
int[][] p, v;
int[][] unicoord;

//

void setup() {
   
  size(640,640);
  //fullScreen();
  colorMode(RGB, 2);
  background(2, 1, 0);

  widt = width-1;
  heigh = height-1;

  p = new int[width][height];
  v = new int[width][height];

  for (int x = 0; x < width; x++) {
   
    for (int y = 0; y < height; y++) {
   
      p[x][y] = 1;
      v[x][y] = 1;
    }
  }

  unicoord = new int[width][height];
  int pixel = 0;
  for (int y = 0; y < height; y++) {
   
    for (int x = 0; x < width; x++) {
   
      unicoord[x][y] = pixel++;
    }
  }

  loadPixels();
}

///

void draw() {
   
  for (int x = 1; x < widt; x++) {
   
    for (int y = 1; y < heigh; y+=2) {
   
      v[x][y] *= p[x][y] * p[x-1][y] * p[x+1][y] * p[x][y-1] * p[x][y+1] * p[x+1][y-1] * p[x+1][y+1];
    }
    for (int y = 2; y < heigh; y+=2) {
   
      v[x][y] *= p[x][y] * p[x-1][y] * p[x+1][
  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值