javascript - 物体在低速时不遵守反射定律

标签 javascript physics-engine matter.js

我正在尝试模拟球在台球 table 上弹跳,但遇到了问题。 ( View 是从上面俯视 table )。

我总是希望球根据反射定律从边界反弹。 入射 Angular =反射 Angular

enter image description here

在右侧边界上的模拟结束时,球似乎沿着它滚动。为什么它不遵循反射定律?

示例:https://jsfiddle.net/5sjx7oyw/

    var Engine = Matter.Engine,
    Render = Matter.Render,
    World = Matter.World,
    Bodies = Matter.Bodies,
    Body = Matter.Body,
    Vector = Matter.Vector,
    Events = Matter.Events;

// create an engine
var engine = Engine.create();

var canvas = document.getElementById('canvas');

engine.world.gravity.y = 0; // gravity not needed in this app

// create a renderer
var render = Render.create({
    element: document.body,
    canvas: canvas,
    engine: engine,
    options: {wireframes: true}
});

var ball_options = {
    density: 0.04,
  restitution: 1,// 0 = no bouncing, 1 = 100% of kinetic energy bounce back
  friction: 0,
  frictionAir: 0.05,
  inertia: Infinity
};

var boundary_options = {
  isStatic: true
};

var ball = Bodies.circle(100, 150, 11, ball_options);

var boundary_left = Bodies.rectangle(10, 160, 100, 200, boundary_options);
var boundary_right = Bodies.rectangle(300, 160, 100, 200, boundary_options);
var boundary_top = Bodies.rectangle(150, 10, 200, 100, boundary_options);
var boundary_bottom = Bodies.rectangle(150, 300, 200, 100, boundary_options);

// add all of the bodies to the world
World.add(engine.world, [
    boundary_left,
  boundary_right,
  boundary_top,
  boundary_bottom,
  ball
  ]);

render.options.height = 300;
canvas.height = 300;
Engine.run(engine);
Render.run(render);

Body.applyForce(ball, { x: 0, y: 0 }, { x: 0.2, y: 0.5 });

最佳答案

我已经在库创建者的帮助下解决了这个问题。

https://jsfiddle.net/8exLLLv6/55/

将以下内容添加到我的代码中解决了该问题:

Matter.Resolver._restingThresh = 0.1;

请参阅gibhub页面了解更多信息。

关于javascript - 物体在低速时不遵守反射定律,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45224130/

相关文章:

python - python 中的碰撞形状

javascript - 二维软体 : Gelly and moldable?

javascript - 事情。 js 检查 body 是否停止移动

javascript - 从嵌套数据绘制多折线图

javascript - 如何在没有 jquery 或其他依赖项的情况下在向下滚动时创建隐藏并在向上滚动菜单上显示

javascript - jquery show () 在关闭面板后不起作用

javascript - 如何从 JavaScript 函数返回文档/节点?

android - 用于移动编程的物理 Flex 库

iOS滑动距离与加速度计

javascript - 如何在 matter.js 中平衡跷跷板上的两个正方形?