Matter.jsを率いて、
ある大枠の容量に応じて剛体が満ち満ちに溜まるようにしたい。
その際、
大枠の面積に対して、剛体の数がどれくらい入るのか求めるプログラムを組みたいため
Matter.js Bodiesで作成する剛体モデルの面積を求める式が必要になり
面積の割り出し方を改めてお勉強をし直しました。
長方形
Matter.js 剛体モデル定義方法
Bodies.rectangle(x, y, width, height);
// width = 横幅
// height = 高さ
長方形の面積
area = width * height;
// 面積 = 横幅 * 高さ
円
Matter.js 剛体モデル定義方法
Matter.Bodies.circle(x, y, radius);
// radius = 半径
円の面積
area = radius * radius * Math.PI;
// 面積 = 半径 * 半径 * 円周率
正多角形
Matter.js 剛体モデル定義方法
Matter.Bodies.polygon(x, y, sides, radius);
// sides = 辺の頂点の数
// radius = 辺の頂点から多角形の中点までの距離
正多角形の面積
area = (radius * radius / 2 * Math.sin(Math.PI * 2 / sides)) * sides;
// 面積 = (辺の頂点から多角形の中点までの距離 * 辺の頂点から多角形の中点までの距離 / 2 * sin(円周率 * 2 /辺の頂点の数)) * 辺の頂点の数
等脚台形
Matter.js 剛体モデル定義方法
Matter.Bodies.trapezoid(x, y, width, height, slope);
// width = 横幅
// height = 高さ
// slope = 傾斜の割合(1で四角形 0で三角形)
等脚台形の面積
area = ((width * slope) + width) * height /2;
// 面積 = ((横幅 * 傾斜の割合) + 横幅) * 高さ / 2
まとめ
今回、式を作るのにかなりggりました....。
(( 学生時代しっかり勉強して入ればこんなの簡単でしたでしょうね... ))
正直、正しく割り出せているのか自信はないので
間違っているなどあれば是非ともご指摘よろしくお願いします。