Alvaro Cassinelli / Mbed 2 deprecated skinGames_forktest

Dependencies:   mbed

Fork of scoreLight_Advanced by Alvaro Cassinelli

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers classSpring.cpp Source File

classSpring.cpp

00001 #include "classSpring.h"
00002 #include "myVectorClass.h"
00003 
00004 //---------------------------------------------------------------------
00005 spring::spring(){
00006     massA = NULL;
00007     massB = NULL;
00008 }
00009 
00010 //---------------------------------------------------------------------
00011 void spring::update(){
00012     if ((massA == NULL) || (massB == NULL)){
00013         return;
00014     }
00015     
00016     vector2Df pta = massA->pos;
00017     vector2Df ptb = massB->pos;
00018     
00019     float theirDistance = (pta - ptb).length();
00020     float springForce = (springiness * (distance - theirDistance));
00021     vector2Df frcToAdd = (pta-ptb).normalize() * springForce;
00022     
00023     massA->addForce(frcToAdd);
00024     massB->addForce(-frcToAdd);
00025     //massA->totalForce.x+=frcToAdd.x;massA->totalForce.y+=frcToAdd.y;
00026     //massB->totalForce.x-=frcToAdd.x;massB->totalForce.y-=frcToAdd.y;
00027 }
00028 
00029 void spring::assymetricUpdate(){ // only second mass suffers a force
00030     if ((massA == NULL) || (massB == NULL)){
00031         return;
00032     }
00033     
00034     vector2Df pta = massA->pos;
00035     vector2Df ptb = massB->pos;
00036     
00037     float theirDistance = (pta - ptb).length();
00038     float springForce = (springiness * (distance - theirDistance));
00039     vector2Df frcToAdd = (pta-ptb).normalize() * springForce;
00040     
00041     //massA->addForce(frcToAdd);
00042     massB->addForce(-frcToAdd);
00043     //massA->totalForce.x+=frcToAdd.x;massA->totalForce.y+=frcToAdd.y;
00044     //massB->totalForce.x-=frcToAdd.x;massB->totalForce.y-=frcToAdd.y;
00045 }