API Docs for: 0.6.1
Show:

File: src/equations/FrictionEquation.js

module.exports = FrictionEquation;
var Equation = require('./Equation');
var Vec3 = require('../math/Vec3');
var Mat3 = require('../math/Mat3');
/**
 * Constrains the slipping in a contact along a tangent
 * @class FrictionEquation
 * @constructor
 * @author schteppe
 * @param {Body} bodyA
 * @param {Body} bodyB
 * @param {Number} slipForce should be +-F_friction = +-mu * F_normal = +-mu * m * g
 * @extends Equation
 */
function FrictionEquation(bodyA, bodyB, slipForce){
 Equation.call(this,bodyA, bodyB, -slipForce, slipForce);
 this.ri = new Vec3();
 this.rj = new Vec3();
 this.t = new Vec3(); // tangent
}
FrictionEquation.prototype = new Equation();
FrictionEquation.prototype.constructor = FrictionEquation;
var FrictionEquation_computeB_temp1 = new Vec3();
var FrictionEquation_computeB_temp2 = new Vec3();
FrictionEquation.prototype.computeB = function(h){
 var a = this.a,
 b = this.b,
 bi = this.bi,
 bj = this.bj,
 ri = this.ri,
 rj = this.rj,
 rixt = FrictionEquation_computeB_temp1,
 rjxt = FrictionEquation_computeB_temp2,
 t = this.t;
 // Caluclate cross products
 ri.cross(t,rixt);
 rj.cross(t,rjxt);
 // G = [-t -rixt t rjxt]
 // And remember, this is a pure velocity constraint, g is always zero!
 var GA = this.jacobianElementA,
 GB = this.jacobianElementB;
 t.negate(GA.spatial);
 rixt.negate(GA.rotational);
 GB.spatial.copy(t);
 GB.rotational.copy(rjxt);
 var GW = this.computeGW();
 var GiMf = this.computeGiMf();
 var B = - GW * b - h * GiMf;
 return B;
};
 

AltStyle によって変換されたページ (->オリジナル) /