computeB method

  1. @override
double computeB(
  1. double h
)
override

Computes the right hand side of the SPOOK equation

Implementation

@override
double computeB(double h){
  final b = this.b;
  final ri = this.ri;
  final rj = this.rj;
  final rixt = _frictionEquationComputeBTemp1;
  final rjxt = _frictionEquationComputeBTemp2;
  final 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!
  final ga = jacobianElementA;

  final gb = jacobianElementB;
  t.negate(ga.spatial);
  rixt.negate(ga.rotational);
  gb.spatial.copy(t);
  gb.rotational.copy(rjxt);

  final gw = computeGW();
  final giMf = computeGiMf();

  final B = -gw * b - h * giMf;

  return B;
}