可视化实验七:大数据可视化工具—Processing
Posted @阿证1024
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可视化实验七:大数据可视化工具—Processing相关的知识,希望对你有一定的参考价值。
实验目的:
- 掌握元胞自动机的概念及构建方法
- 利用Processing绘制森林火灾模型
实验内容:
- 复习如何使用Processing绘制点、线、圆、椭圆、曲线等
- 练习使用Processing构建二维元胞自动机
- 在步骤二基础上构建一个森林火灾蔓延的可视化模型
实验过程(附结果截图):
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的主要内容,如果未能解决你的问题,请参考以下文章