标签: physicsjs

为什么PhysicsJS中的重力加速度为0.0004?

或者,或许,更好,它是什么意思?

单位应该是什么?

如果我试图模拟与"背景"的摩擦,像这样:

return this
    .velocityDirection
    .mult(mu * this.mass * g)
    .negate();
Run Code Online (Sandbox Code Playgroud)

我希望用g为9.80665 m/s ^ 2.它在PhysicsJS之前以这种方式工作:

var
    frictionForce;
    frictionForce = vec2.create();
    vec2.scale(
        frictionForce,
        vec2.negate(
            frictionForce,
            this.velocityDirection
        ),
        mu * this.mass * g
    );
return frictionForce;
Run Code Online (Sandbox Code Playgroud)

使用glMatrix作为我的线性代数.

我正在考虑以千克为单位的质量和以牛顿(等)为单位的力量,但是在PhysicsJS中它看起来并不像那样.(例如:如果我有一个半径为1的圆体,那么它是什么?因为当我必须将此值用于其他东西时,以及当它"转换"为屏幕上的像素时,它会有所不同

既然我正在使用物理库,我觉得我错过了一些物理学...

我希望有人能指出我正确的方向来更好地理解它.我现在正在浏览API Docs并学习很多但不是我找到了我想要的答案.

UPDATE

我收到了一个非常简单的答案.这只是为了让任何有兴趣知道我做了什么的人......

感谢Jasper和dandelany,我开始了解一些PhysicsJS的工作原理要好得多.为了实现我在PhysicsJS中使用牛顿输入,米/秒平方(等)的"梦想"(并且还具有每米比率的可配置像素),我决定创建另一个积分器.

它只是原始(和默认)verlet集成器的略微变化.我或多或少地解释了这篇(粗略的)物文中的Meters,Seconds和Newtons

javascript physics physicsjs

11
推荐指数
2
解决办法
670
查看次数

如何解决npm install中的peerinvalid错误?

我正在尝试按照步骤为PhysicsJS(https://github.com/wellcaffeinated/PhysicsJS#contributing)做出贡献,并在此过程中出现以下错误npm install.

npm ERR! peerinvalid The package grunt-contrib-jasmine does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer grunt-template-jasmine-requirejs@0.1.10 wants grunt-contrib-jasmine@~0.5.3
npm ERR! System Linux 3.13.0-24-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install"
npm ERR! cwd /home/slacktracer/Dropbox/dev/PhysicsJS
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! code EPEERINVALID
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/slacktracer/Dropbox/dev/PhysicsJS/npm-debug.log
npm ERR! not ok code 0
Run Code Online (Sandbox Code Playgroud)

有关如何解决的任何建议?

node.js npm jasmine gruntjs physicsjs

9
推荐指数
1
解决办法
1万
查看次数

如何制作逼真的轮盘球旋转动画

我正在使用PhysicsJS制作2D轮盘球旋转动画.

到目前为止,我已经实现了以下内容:

  • 使用约束使球不会"飞走":
    rigidConstraints.distanceConstraint( wheel, ball, 1 );
  • 拖动减速球:
    world.add(Physics.integrator('verlet', { drag: 0.9 }));
  • 让车轮吸引球,当阻力足够慢时,球会落到它上面

我的问题:

  1. 我如何逐渐减慢球的旋转速度?
    我已经有了很高的drag价值,但它看起来并没有做任何事情
  2. 如何吸引车轮工作?
    距离约束应该防止球逃脱,而不是靠近车轮.
  3. 为什么 angularVelocity: -0.005 在车轮上根本不起作用?

我的代码,也在JSfiddle上

Physics(function (world) {
    var viewWidth = window.innerWidth
        ,viewHeight = window.innerHeight
        ,renderer
        ;

    world.add(Physics.integrator('verlet', {
        drag: 0.9
    }));

    var rigidConstraints = Physics.behavior('verlet-constraints', {
        iterations: 10
    });

    // create a renderer
    renderer = Physics.renderer('canvas', {
        el: 'viewport'
        ,width: viewWidth
        ,height: viewHeight
    });

    // add the renderer
    world.add(renderer);
    // …
Run Code Online (Sandbox Code Playgroud)

javascript physicsjs

7
推荐指数
1
解决办法
2244
查看次数

PhysicsJS - 在它的末尾创建绳索并附加一些东西

问题1:
我是PhysicsJS的新手,我试图创建一条绳索,其中包含" 篮子角色约束 "
这样的东西:JSFiddle
如你所见,这条绳子不自然!(摩擦,绳索,稳定时间......)并且通过增加绳索的长度,它变得更糟!
首先我认为,通过增加绳索颗粒的质量,它会更快地减速,但......

var basket = [];
var fpos = window.innerWidth / 2;
var epos = window.innerHeight / 2;
for ( var i = fpos; i < fpos + epos; i += 5 ){

    l = basket.push(
        Physics.body('circle', {
            x: i
            ,y: 50 - (i-fpos)
            ,radius: 1
            ,restitution: 0
            ,mass: 1000
            ,conf: 1
            ,hidden: true
        })
    );

    rigidConstraints.distanceConstraint( basket[ l - 1 ], basket[ l - 2 ], 2 );
}
Run Code Online (Sandbox Code Playgroud)

问题2:解决
之后,我怎么能这样做:(
在绳子的末端附上一个矩形框)

在此输入图像描述

javascript canvas html5-canvas physicsjs

3
推荐指数
1
解决办法
656
查看次数

PhysicsJS - 如何创建一个在敲击时绕固定点旋转的物体?

我一直在试验优秀的PhysicsJS库,特别是约束和碰撞.我想要实现的是一个可以绕固定旋转点旋转的多边形.作为一个现实世界的例子,想象一个宽大的架子钉在墙上,只有一个长钉穿过正中心,这样当它偏离中心从上面落下时,它可以旋转半圈或一圈.

这是一个示例小提琴:http://jsfiddle.net/2HRGW/41/

和代码:

Physics(function (world) {
var renderer = Physics.renderer('canvas', {
    el: 'viewport',
    width: 500,
    height: 400
});
world.add(renderer);

var nail = Physics.body('circle', {
    x: 250,
    y: 200,
    radius: 5,
    mass: 1,
    fixed: true
});
world.add(nail);

var shelf = Physics.body('convex-polygon', {
    x: 250,
    y: 200,
    vertices: [{
        x: -100,
        y: -10
    }, {
        x: 100,
        y: -10
    }, {
        x: 100,
        y: 10
    }, {
        x: -100,
        y: 10
    }],
    mass: 100,
    restitution: 0.5
});
world.add(shelf);

var …
Run Code Online (Sandbox Code Playgroud)

javascript constraints physicsjs

2
推荐指数
1
解决办法
2059
查看次数

解决 webpack 中外部子模块的依赖

我想包括一个模块化的第三方库(PhysicsJS)到我的WebPack项目。这个库是 AMD 和 CommonJS 友好的,并且有我想要访问的格式良好的子模块。然而,它主要是为 RequireJS 构建的,通过它的packages定义规范 in require.config(),所以入口点不是标准的index.js. 相反,入口点是physicsjs.js.

换句话说,我似乎无法弄清楚如何配置 webpack 来解析库的主文件及其子模块。看起来如果库的入口点不是index.js并且它有子模块,那么你就不走运了,我简直不敢相信这是正确的,所以我一定错过了一些东西。

那么,如何才能做出以下陈述来解决呢?

require('physicsjs'); // entry point
require('physicsjs/bodies/rectangle');  // submodule
Run Code Online (Sandbox Code Playgroud)

我尝试过此配置的变体:

resolve: {
    modulesDirectories: [
        'js/bower_components'
    ],
    alias: {
        'physicsjs': 'PhysicsJS/dist/',
        // doesn't find physicsjs.js

        'physicsjs': 'PhysicsJS/dist/physicsjs.js'
        // doesn't find the submodules
    }
},
Run Code Online (Sandbox Code Playgroud)

目录结构如下所示:

+ js
  - main.js
  + bower_modules
    + PhysicsJS
      + dist
        - physicsjs.js // module entry point
        + bodies
          - rectangle.js // desired submodule …
Run Code Online (Sandbox Code Playgroud)

javascript dependencies physicsjs webpack

1
推荐指数
1
解决办法
1955
查看次数