可视化实验七:大数据可视化工具—Processing

Posted @阿证1024

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可视化实验七:大数据可视化工具—Processing相关的知识,希望对你有一定的参考价值。

实验目的:

  1. 掌握元胞自动机的概念及构建方法
  2. 利用Processing绘制森林火灾模型

实验内容:

  1. 复习如何使用Processing绘制点、线、圆、椭圆、曲线等
  2. 练习使用Processing构建二维元胞自动机
  3. 在步骤二基础上构建一个森林火灾蔓延的可视化模型

实验过程(附结果截图):

1.复习如何使用Processing绘制点、线、圆、椭圆、曲线等

(1)复习绘制点、线、圆、椭圆
在这里插入图片描述
(2)复习绘制四边形
在这里插入图片描述
2.构建一个森林火灾蔓延的可视化模型

(1)编写代码

int[][][] pix = new int[2][400][400];
int toDraw = 0;

int tree = 0;
int burningTree = 1;
int emptySite = 2;

int x_limit = 400;
int y_limit = 400;

color brown = color(80, 50, 10); // brown
color red   = color(255, 0, 0); // red;
color green = color(0, 255, 0); // green

float pGrowth = 0.01;
float pBurn = 0.00006;


boolean prob( float p )
{
  if (random(0, 1) < p) return true;
  else return false;
}


void setup()
{
  size(400, 400);
  frameRate(60);

  /* Initialize to all empty sites */
  for (int x = 0; x < x_limit; x++) {
    for (int y = 0; y < y_limit; y++) {
      pix[toDraw][x][y] = emptySite;
    }
  }
}


void draw()
{
  update();

  for (int x = 0; x < x_limit; x++) {
    for (int y = 0; y < y_limit; y++) {

      if        (pix[toDraw][x][y] == tree) {
        stroke( green );
      } else if (pix[toDraw][x][y] == burningTree) {
        stroke( red );
      } else stroke( brown );

      point( x, y );
    }
  }

  toDraw = (toDraw == 0) ? 1 : 0;
}


void update()
{
  int x, y, dx, dy, cell, chg, burningTreeCount;
  int toCompute = (toDraw == 0) ? 1 : 0;

  for (x = 1; x < x_limit-1; x++) {
    for (y = 1; y < y_limit-1; y++) {

      cell = pix[toDraw][x][y];

      // Survey area for burning trees
      burningTreeCount = 0;
      for (dx = -1; dx < 2; dx++) {
        for (dy = -1; dy < 2; dy++) {
          if ((dx == 0) && (dy == 0)) continue;
          else if (pix[toDraw][x+dx][y+dy] == burningTree) burningTreeCount++;
        }
      }

      // Determine next state
      if      (cell == burningTree) chg = emptySite;
      else if ((cell == emptySite) && (prob(pGrowth))) chg = tree;
      else if ((cell == tree) && (prob(pBurn))) chg = burningTree;
      else if ((cell == tree) && (burningTreeCount > 0)) chg = burningTree;
      else chg = cell;
      pix[toCompute][x][y] = chg;
    }
  }
}

在这里插入图片描述
(2)模型演示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验小结自己写写就行了,本实验仅供参考。

以上是关于可视化实验七:大数据可视化工具—Processing的主要内容,如果未能解决你的问题,请参考以下文章

实验六:大数据可视化工具—Processing

实验三 大数据可视化工具—ECharts

可视化实验三:大数据可视化工具—ECharts

可视化实验四:大数据可视化工具—ECharts

可视化实验六:大数据可视化工具—Processing

可视化实验二:大数据可视化工具—Tableau