パーティクルの基礎
実行例
ソースコード
TypeScript
解説/アルゴリズム
export type Particle = {
  // 位置
  x: number;
  y: number;
  // 速度
  vx: number;
  vy: number;
  // 形状は円にするので半径の情報を持つ
  radius: number;
};
export function init(
  x: number,
  y: number,
  vx: number,
  vy: number,
  radius: number
): Particle {
  return { x, y, vx, vy, radius };
}
// 毎フレーム速度の情報をもとに位置を更新する
export function update(p: Particle): void {
  p.x += p.vx;
  p.y += p.vy;
}
パーティクルを表現するために最低限必要な情報を定義する。
パーティクルの個々の表示オブジェクトを作る Particle クラスは、位置と速度を定義している。
形状は円にするので半径の情報を持ち合わせている。
particles = [];
for (let i = 0; i < 100; i++) {
  const vx = p.random(-3, 3);
  const vy = p.random(-3, 3);
  const particle = init(p.windowWidth / 2, p.windowHeight / 2, vx, vy, 30);
  particles.push(particle);
}
パーティクルオブジェクトを 100 個ほど作り、配列に入れておく。
パーティクルの初期位置は画面中央、速度はランダムにしておく。
p.draw = () => {
  p.background(color.background);
  p.fill(color.fill);
  p.noStroke();
  particles.forEach((particle) => {
    update(particle);
    p.circle(particle.x, particle.y, particle.radius);
  });
};
毎フレーム画面を初期化して、全てのパーティクルをそれぞれの位置情報をもとに描画を行う。
