generateCreateDragForce.js 766 B

1234567891011121314151617181920212223
  1. const createPatternBuilder = require('./createPatternBuilder');
  2. module.exports = generateCreateDragForceFunction;
  3. module.exports.generateCreateDragForceFunctionBody = generateCreateDragForceFunctionBody;
  4. function generateCreateDragForceFunction(dimension) {
  5. let code = generateCreateDragForceFunctionBody(dimension);
  6. return new Function('options', code);
  7. }
  8. function generateCreateDragForceFunctionBody(dimension) {
  9. let pattern = createPatternBuilder(dimension);
  10. let code = `
  11. if (!Number.isFinite(options.dragCoefficient)) throw new Error('dragCoefficient is not a finite number');
  12. return {
  13. update: function(body) {
  14. ${pattern('body.force.{var} -= options.dragCoefficient * body.velocity.{var};', {indent: 6})}
  15. }
  16. };
  17. `;
  18. return code;
  19. }