Mercurial > hg > beaglert
view projects/airharp/MassSpringDamper.cpp @ 164:40badaff5729 heavy-updated
- added more pd/heavy examples
- removed heavy-specific flags from Makefile
- added air-harp cpp example project
author | chnrx <chris.heinrichs@gmail.com> |
---|---|
date | Thu, 03 Dec 2015 16:19:33 +0000 |
parents | |
children |
line wrap: on
line source
/* * * Simple 1-Dimensional Mass Spring Damper * * Christian Heinrichs 04/2015 * */ #include "MassSpringDamper.h" MassSpringDamper::MassSpringDamper(float mass, float spring, float damp) { _dt = 1.0/44100.0; _mass = mass; _spring = spring; _damp = damp; _position = 0; _velocity = 0; } void MassSpringDamper::setup() { } double MassSpringDamper::update(float inForce) { // 1. calculate spring/damper forces using current position and velocity double out = (_position * (double)_spring * -1) + (_velocity * (double)_damp * -1); // 2. apply external force out += inForce; // 3. derive acceleration (a = f/m) out /= (double)_mass; // 4. derive velocity (v = a*dt) out *= _dt; // 5. apply previous velocity out += _velocity; // 6. save current velocity state for next iteration _velocity = out; // 7. derive new position (x[n] = x[n-1] + v[n]) and save for next iteration out += _position; _position = out; return out; }