时间的流逝,事物更迭、生命轮回...
从统计学的诞生开始,直观化一直是个非常重要的过程,只有将数据直观的表现出来,人们才会更容易更充分的发现规律。直到今天,掌握数据可视化也成为了程序员必备的素质。而数据可视化作为一种视觉的形式,也具有一般视觉作品的艺术和美感。我们可以利用多种技术,结合自己的创造力,利用数据完成具有特殊意义的作品,同时传达一些重要的信息。同时,我们也要多多进行数据可视化,因为总有些规律是出乎意料的,甚至目前科学是解释不了的,这样会使我们有许多新的发现。
二,时间可视化作业说明
我的作品名叫《时之落红》,内容是依据时间来掉落花瓣,每过一分钟,会增加一朵花瓣,每过一秒钟,花瓣的速度会增加,每小时清空一次,并改变背景的颜色。
该作品可以表示时间的流逝,同时能表现事物更迭、生命轮回的意境。
int numFlakes = 1; // 初始的花瓣数量
int maxFlakes = 60; // 60 分钟一循环
int bgColor = color(50, 50,50); // 背景颜色
class SnowFlake {
// SnowFlake 类包含花瓣的所有信息
float x, y; // 花瓣的位置
float speed; // 花瓣的速度
float size; // 花瓣的大小
float alpha; // 花瓣的透明度
SnowFlake() {
// 构造函数初始化花瓣
x = random(width); // 随机位置
y = random(height);
speed = 0; // 初始速度为 0
size = random(5, 20); // 随机大小
alpha = random(0.1, 0.5); // 随机透明度
}
void update() {
// 更新花瓣的状态
speed += 0.1; // 速度增加 0.1
y += speed; // 按照速度移动花瓣
// 如果花瓣超出画布,重新回到顶部
if (y > height) {
y = 0;
x = random(width);
speed = 0;
}
}
void display() {
// 绘制花瓣
fill(255, 0, 255, alpha * 255); // 粉红色,透明度根据 alpha 值计算
ellipse(x, y, size, size); // 用椭圆形绘制花瓣
}
}
SnowFlake[] flakes = new SnowFlake[maxFlakes]; // 创建花瓣数组
void setup() {
size(1000, 1000); // 设置画布大小
frameRate(60); // 设置帧率为 60 fps
// 初始化花瓣
for (int i = 0; i < maxFlakes; i++) {
flakes[i] = new SnowFlake();
}
}
void draw() {
//// 绘制背景和花瓣
background(bgColor);
for (int i = 0; i < numFlakes; i++) {
flakes[i].update();
flakes[i].display();
}
// 每过一分钟增加一片花瓣
noStroke();
if (frameCount % 3600 == 0) {
numFlakes++;
if (numFlakes > maxFlakes) {
numFlakes = 1; // 循环
}
}
// 每过一小时改变背景颜色
if (frameCount % 216000 == 0) {
bgColor = color(random(20,255), random(255), random(255));
}
}