just a test

Dependencies:   mbed

Fork of scoreLight_Advanced by Alvaro Cassinelli

Committer:
mbedalvaro
Date:
Thu Apr 12 08:38:44 2012 +0000
Revision:
12:0de9cd2bced5
Parent:
0:345b3bc7a0ea
Child:
30:d8af03f01cd4
1) template class vector works fine. This way, I have more memory (by defining a rigid scafold using unsigned shorts). I can now make an elastic blob of at least 50 points. ; ; To do: double buffering (this will again take memory, but it may be ok becaus...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedalvaro 0:345b3bc7a0ea 1 #include "classSpring.h"
mbedalvaro 0:345b3bc7a0ea 2 #include "myVectorClass.h"
mbedalvaro 0:345b3bc7a0ea 3
mbedalvaro 0:345b3bc7a0ea 4 //---------------------------------------------------------------------
mbedalvaro 0:345b3bc7a0ea 5 spring::spring(){
mbedalvaro 0:345b3bc7a0ea 6 massA = NULL;
mbedalvaro 0:345b3bc7a0ea 7 massB = NULL;
mbedalvaro 0:345b3bc7a0ea 8 }
mbedalvaro 0:345b3bc7a0ea 9
mbedalvaro 0:345b3bc7a0ea 10 //---------------------------------------------------------------------
mbedalvaro 0:345b3bc7a0ea 11 void spring::update(){
mbedalvaro 0:345b3bc7a0ea 12 if ((massA == NULL) || (massB == NULL)){
mbedalvaro 0:345b3bc7a0ea 13 return;
mbedalvaro 0:345b3bc7a0ea 14 }
mbedalvaro 0:345b3bc7a0ea 15
mbedalvaro 12:0de9cd2bced5 16 vector2Df pta = massA->pos;
mbedalvaro 12:0de9cd2bced5 17 vector2Df ptb = massB->pos;
mbedalvaro 0:345b3bc7a0ea 18
mbedalvaro 0:345b3bc7a0ea 19 float theirDistance = (pta - ptb).length();
mbedalvaro 0:345b3bc7a0ea 20 float springForce = (springiness * (distance - theirDistance));
mbedalvaro 12:0de9cd2bced5 21 vector2Df frcToAdd = (pta-ptb).normalize() * springForce;
mbedalvaro 0:345b3bc7a0ea 22
mbedalvaro 0:345b3bc7a0ea 23 massA->addForce(frcToAdd);
mbedalvaro 0:345b3bc7a0ea 24 massB->addForce(-frcToAdd);
mbedalvaro 0:345b3bc7a0ea 25 //massA->totalForce.x+=frcToAdd.x;massA->totalForce.y+=frcToAdd.y;
mbedalvaro 0:345b3bc7a0ea 26 //massB->totalForce.x-=frcToAdd.x;massB->totalForce.y-=frcToAdd.y;
mbedalvaro 0:345b3bc7a0ea 27 }
mbedalvaro 0:345b3bc7a0ea 28
mbedalvaro 0:345b3bc7a0ea 29 void spring::assymetricUpdate(){ // only second mass suffers a force
mbedalvaro 0:345b3bc7a0ea 30 if ((massA == NULL) || (massB == NULL)){
mbedalvaro 0:345b3bc7a0ea 31 return;
mbedalvaro 0:345b3bc7a0ea 32 }
mbedalvaro 0:345b3bc7a0ea 33
mbedalvaro 12:0de9cd2bced5 34 vector2Df pta = massA->pos;
mbedalvaro 12:0de9cd2bced5 35 vector2Df ptb = massB->pos;
mbedalvaro 0:345b3bc7a0ea 36
mbedalvaro 0:345b3bc7a0ea 37 float theirDistance = (pta - ptb).length();
mbedalvaro 0:345b3bc7a0ea 38 float springForce = (springiness * (distance - theirDistance));
mbedalvaro 12:0de9cd2bced5 39 vector2Df frcToAdd = (pta-ptb).normalize() * springForce;
mbedalvaro 0:345b3bc7a0ea 40
mbedalvaro 0:345b3bc7a0ea 41 //massA->addForce(frcToAdd);
mbedalvaro 0:345b3bc7a0ea 42 massB->addForce(-frcToAdd);
mbedalvaro 0:345b3bc7a0ea 43 //massA->totalForce.x+=frcToAdd.x;massA->totalForce.y+=frcToAdd.y;
mbedalvaro 0:345b3bc7a0ea 44 //massB->totalForce.x-=frcToAdd.x;massB->totalForce.y-=frcToAdd.y;
mbedalvaro 0:345b3bc7a0ea 45 }