Heat Equation
What
熱伝導方程式を順次解きながら画面に描画しています。
青色の部分が温度が低く、赤い部分が高温を表しています。
How
var current_steps = new Array(402);
var results = new Array(400);
var c = 0.5;
function setup() {
createCanvas(500, 400);
current_steps[0] = 500;
for(i = 0;i<400; i++){
current_steps[i + 1] = 0;
}
current_steps[401] = 0;
}
function draw() {
noStroke();
background(255);
for(i=0;i<400;i++){
results[i] = c * (current_steps[i] + current_steps[i + 2] - 2 * current_steps[i + 1]) + current_steps[i + 1];
if(i > 0){
fill(color(results[i], 0, 255 - results[i]));
rect(i + 50, 200, 1, 20);
}
}
for(i = 0; i < 400; i++){
current_steps[i + 1] = results[i];
}
}