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];
  }
}