Alvaro Cassinelli
/
skinGames_forktest
just a test
Fork of scoreLight_Advanced by
Diff: classSpring.cpp
- Revision:
- 0:345b3bc7a0ea
- Child:
- 12:0de9cd2bced5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/classSpring.cpp Wed Mar 28 14:40:01 2012 +0000 @@ -0,0 +1,45 @@ +#include "classSpring.h" +#include "myVectorClass.h" + +//--------------------------------------------------------------------- +spring::spring(){ + massA = NULL; + massB = NULL; +} + +//--------------------------------------------------------------------- +void spring::update(){ + if ((massA == NULL) || (massB == NULL)){ + return; + } + + vector2D pta = massA->pos; + vector2D ptb = massB->pos; + + float theirDistance = (pta - ptb).length(); + float springForce = (springiness * (distance - theirDistance)); + vector2D frcToAdd = (pta-ptb).normalize() * springForce; + + massA->addForce(frcToAdd); + massB->addForce(-frcToAdd); + //massA->totalForce.x+=frcToAdd.x;massA->totalForce.y+=frcToAdd.y; + //massB->totalForce.x-=frcToAdd.x;massB->totalForce.y-=frcToAdd.y; +} + +void spring::assymetricUpdate(){ // only second mass suffers a force + if ((massA == NULL) || (massB == NULL)){ + return; + } + + vector2D pta = massA->pos; + vector2D ptb = massB->pos; + + float theirDistance = (pta - ptb).length(); + float springForce = (springiness * (distance - theirDistance)); + vector2D frcToAdd = (pta-ptb).normalize() * springForce; + + //massA->addForce(frcToAdd); + massB->addForce(-frcToAdd); + //massA->totalForce.x+=frcToAdd.x;massA->totalForce.y+=frcToAdd.y; + //massB->totalForce.x-=frcToAdd.x;massB->totalForce.y-=frcToAdd.y; +}