Add completed dominoes

This commit is contained in:
Lev
2021-06-10 10:46:02 -05:00
parent 5cf9e9703f
commit b260686a77
6 changed files with 10493 additions and 0 deletions

View File

@ -0,0 +1,85 @@
// Example is based on examples from:
// http://brm.io/matter-js/
// https://github.com/shiffman/p5-matter
// https://github.com/b-g/p5-matter-examples
// module aliases
let Engine = Matter.Engine;
let Render = Matter.Render;
let World = Matter.World;
let Bodies = Matter.Bodies;
let Composites = Matter.Composites;
let Composite = Matter.Composite;
let Body = Matter.Body;
let engine;
let ball;
let ground;
let stack;
function setup() {
createCanvas(1200, 600);
// create an engine
engine = Engine.create();
ball = Bodies.circle(30, 0, 20, {
restitution: 1,
friction: 0,
density: 0.003,
});
let options = { isStatic: true, angle: Math.PI * 0 };
ground = Bodies.rectangle(width / 2, 500, width, 10, options);
smallGround = Bodies.rectangle(50, 470, 100, 10, {
isStatic: true,
angle: Math.PI * 0.2,
});
// add all of the bodies to the world
World.add(engine.world, [ground, ball, smallGround]);
setupDominoes();
}
/////////////////////////////////////////////////////////
function draw() {
background(0);
Engine.update(engine);
fill(255);
drawVertices(ball.vertices);
drawDominoes();
fill(128);
drawVertices(ground.vertices);
drawVertices(smallGround.vertices);
}
/////////////////////////////////////////////////////////
function setupDominoes() {
let size = 10;
stack = Composites.stack(200, height - 305, 30,1,20,0,
function (x, y) {
let partA = Bodies.rectangle(x, y, 10, 200);
return Body.create({ parts: [partA] });
}
);
Composite.add(engine.world, [stack]);
}
/////////////////////////////////////////////////////////
function drawDominoes() {
fill(255);
for (let i = 0; i < stack.bodies.length; i++) {
drawVertices(stack.bodies[i].vertices);
}
}
/////////////////////////////////////////////////////////
// ********* HELPER FUNCTIONS **********
/////////////////////////////////////////////////////////
function drawVertices(vertices) {
beginShape();
for (let i = 0; i < vertices.length; i++) {
vertex(vertices[i].x, vertices[i].y);
}
endShape(CLOSE);
}