LoginSignup
1
2

More than 5 years have passed since last update.

【Matter.js】剛体モデルの面積を求める備忘録

Last updated at Posted at 2018-10-24

Matter.jsを率いて、
ある大枠の容量に応じて剛体が満ち満ちに溜まるようにしたい。
その際、
大枠の面積に対して、剛体の数がどれくらい入るのか求めるプログラムを組みたいため
Matter.js Bodiesで作成する剛体モデルの面積を求める式が必要になり
面積の割り出し方を改めてお勉強をし直しました。:innocent:

長方形

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りました....。:sweat_smile:
(( 学生時代しっかり勉強して入ればこんなの簡単でしたでしょうね... ))
正直、正しく割り出せているのか自信はないので
間違っているなどあれば是非ともご指摘よろしくお願いします。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2