Alvaro Cassinelli / Mbed 2 deprecated skinGames_forktest

Dependencies:   mbed

Fork of scoreLight_Advanced by Alvaro Cassinelli

Committer:
mbedalvaro
Date:
Tue Jun 19 11:22:46 2012 +0000
Revision:
28:44b7b6e35548
Parent:
27:1ce994629ffc
Child:
30:d8af03f01cd4
version almost ready for AsahiTV;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedalvaro 0:345b3bc7a0ea 1
mbedalvaro 0:345b3bc7a0ea 2 #include "blobConfig.h"
mbedalvaro 0:345b3bc7a0ea 3 #include "hardwareIO.h" // this is in fact only to get to know the initial position of the spots, as well as the mirror limits to set the bounding box for the blobs
mbedalvaro 0:345b3bc7a0ea 4
mbedalvaro 0:345b3bc7a0ea 5 blobConfig::blobConfig(): numBlobs(0) {
mbedalvaro 1:a4050fee11f7 6 //blobArray.clear();// there is no need to do this, the vector does not contains anything here.
mbedalvaro 1:a4050fee11f7 7
mbedalvaro 0:345b3bc7a0ea 8 }
mbedalvaro 0:345b3bc7a0ea 9
mbedalvaro 0:345b3bc7a0ea 10 blobConfig::~blobConfig() {
mbedalvaro 1:a4050fee11f7 11 clearConfig();
mbedalvaro 1:a4050fee11f7 12
mbedalvaro 0:345b3bc7a0ea 13 }
mbedalvaro 0:345b3bc7a0ea 14
mbedalvaro 0:345b3bc7a0ea 15 // =========================================== STANDARD CONFIGURATIONS =============================================================================
mbedalvaro 0:345b3bc7a0ea 16
mbedalvaro 0:345b3bc7a0ea 17 void blobConfig::computeBoundingBox() {
mbedalvaro 1:a4050fee11f7 18 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 1:a4050fee11f7 19 blobArray[i]->computeBoundingBox();
mbedalvaro 1:a4050fee11f7 20 }
mbedalvaro 0:345b3bc7a0ea 21 }
mbedalvaro 0:345b3bc7a0ea 22
mbedalvaro 0:345b3bc7a0ea 23 void blobConfig::clearConfig() {
mbedalvaro 1:a4050fee11f7 24 for (int i=0; i<blobArray.size(); i++) delete blobArray[i]; // we must delete the pointer created with new, so the memory for the object is liberated (calls its destructor)
mbedalvaro 1:a4050fee11f7 25 blobArray.clear();
mbedalvaro 1:a4050fee11f7 26 numBlobs=0;// this is just equal to blobArray.size()
mbedalvaro 0:345b3bc7a0ea 27 }
mbedalvaro 0:345b3bc7a0ea 28
mbedalvaro 1:a4050fee11f7 29 void blobConfig::addOneElasticLoopRelax() {
mbedalvaro 1:a4050fee11f7 30 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 12:0de9cd2bced5 31 pBlob->createBlob(blobArray.size(), RELAX, vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df(0,0));
mbedalvaro 1:a4050fee11f7 32 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 33 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 34
mbedalvaro 1:a4050fee11f7 35 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 36 numBlobs=blobArray.size();
mbedalvaro 1:a4050fee11f7 37
mbedalvaro 0:345b3bc7a0ea 38 }
mbedalvaro 0:345b3bc7a0ea 39
mbedalvaro 0:345b3bc7a0ea 40
mbedalvaro 1:a4050fee11f7 41 void blobConfig::addOneElasticLoopContract() {
mbedalvaro 1:a4050fee11f7 42 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 12:0de9cd2bced5 43 pBlob->createBlob(blobArray.size(), CONTRACT, vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df(0,0));
mbedalvaro 1:a4050fee11f7 44 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 45 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 46
mbedalvaro 1:a4050fee11f7 47 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 48 numBlobs=blobArray.size();
mbedalvaro 0:345b3bc7a0ea 49 }
mbedalvaro 0:345b3bc7a0ea 50
mbedalvaro 1:a4050fee11f7 51 void blobConfig::addOneElasticLoopContractCentral() {
mbedalvaro 1:a4050fee11f7 52 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 12:0de9cd2bced5 53 pBlob->createBlob(blobArray.size(), CONTRACT_CENTRAL, vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df(0,0));
mbedalvaro 1:a4050fee11f7 54 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 55 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 56
mbedalvaro 1:a4050fee11f7 57 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 58 numBlobs=blobArray.size();
mbedalvaro 0:345b3bc7a0ea 59 }
mbedalvaro 0:345b3bc7a0ea 60
mbedalvaro 19:228430f1350e 61 void blobConfig::addOneElasticLoopContractCentralFast() {
mbedalvaro 19:228430f1350e 62 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 19:228430f1350e 63 pBlob->createBlob(blobArray.size(), CONTRACT_CENTRAL_FAST, vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df(0,0));
mbedalvaro 19:228430f1350e 64 // add this relaxing loop to the present config:
mbedalvaro 19:228430f1350e 65 blobArray.push_back(pBlob);
mbedalvaro 19:228430f1350e 66
mbedalvaro 19:228430f1350e 67 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 19:228430f1350e 68 numBlobs=blobArray.size();
mbedalvaro 19:228430f1350e 69 }
mbedalvaro 19:228430f1350e 70
mbedalvaro 1:a4050fee11f7 71 void blobConfig::addOneElasticContourFollowing() {
mbedalvaro 1:a4050fee11f7 72
mbedalvaro 1:a4050fee11f7 73 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 12:0de9cd2bced5 74 pBlob->createBlob(blobArray.size(), CONTOUR_FOLLOWING, vector2Df(CENTER_AD_MIRROR_X+100*blobArray.size(), CENTER_AD_MIRROR_Y+100*blobArray.size()), vector2Df(0,0));
mbedalvaro 1:a4050fee11f7 75 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 76 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 77
mbedalvaro 1:a4050fee11f7 78 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 79 numBlobs=blobArray.size();
mbedalvaro 0:345b3bc7a0ea 80 }
mbedalvaro 0:345b3bc7a0ea 81
mbedalvaro 0:345b3bc7a0ea 82
mbedalvaro 1:a4050fee11f7 83 void blobConfig:: addOneElasticContourFollowingFAST() {
mbedalvaro 1:a4050fee11f7 84 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 12:0de9cd2bced5 85 pBlob->createBlob(blobArray.size(), CONTOUR_FOLLOWING_FAST, vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df(0,0));
mbedalvaro 0:345b3bc7a0ea 86 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 87 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 88
mbedalvaro 1:a4050fee11f7 89 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 90 numBlobs=blobArray.size();
mbedalvaro 1:a4050fee11f7 91 }
mbedalvaro 1:a4050fee11f7 92
mbedalvaro 1:a4050fee11f7 93 void blobConfig::addOneElasticBouncing() {
mbedalvaro 1:a4050fee11f7 94 elasticLoop* pBlob= new elasticLoop();
mbedalvaro 12:0de9cd2bced5 95 pBlob->createBlob(blobArray.size(), BOUNCING, vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df(1,1));
mbedalvaro 1:a4050fee11f7 96 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 97 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 98
mbedalvaro 1:a4050fee11f7 99 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 100 numBlobs=blobArray.size();
mbedalvaro 0:345b3bc7a0ea 101 }
mbedalvaro 0:345b3bc7a0ea 102
mbedalvaro 1:a4050fee11f7 103 void blobConfig::addOneRigidLoopBouncing() {
mbedalvaro 1:a4050fee11f7 104 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 22:d87317d7ca91 105 pBlob->createBlob(blobArray.size(), SPOT_BOUNCING, vector2Df(CENTER_AD_MIRROR_X+100*blobArray.size(), CENTER_AD_MIRROR_Y+100*blobArray.size()), vector2Df(rand()%3,rand()%3));
mbedalvaro 0:345b3bc7a0ea 106 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 107 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 108
mbedalvaro 1:a4050fee11f7 109 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 110 numBlobs=blobArray.size();
mbedalvaro 0:345b3bc7a0ea 111 }
mbedalvaro 0:345b3bc7a0ea 112
mbedalvaro 27:1ce994629ffc 113 void blobConfig::addOneRigidLoopFountain() {
mbedalvaro 27:1ce994629ffc 114 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 27:1ce994629ffc 115 pBlob->createBlob(blobArray.size(), SPOT_FOUNTAIN, vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df(rand()%3,rand()%3));
mbedalvaro 27:1ce994629ffc 116 // add this loop to the present config:
mbedalvaro 27:1ce994629ffc 117 blobArray.push_back(pBlob);
mbedalvaro 27:1ce994629ffc 118
mbedalvaro 27:1ce994629ffc 119 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 27:1ce994629ffc 120 numBlobs=blobArray.size();
mbedalvaro 27:1ce994629ffc 121 }
mbedalvaro 27:1ce994629ffc 122
mbedalvaro 28:44b7b6e35548 123 void blobConfig::addOneRigidLoopAirHockey() {
mbedalvaro 28:44b7b6e35548 124 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 28:44b7b6e35548 125 pBlob->createBlob(blobArray.size(), SPOT_AIR_HOCKEY, vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df(0,0));
mbedalvaro 28:44b7b6e35548 126 // add this loop to the present config:
mbedalvaro 28:44b7b6e35548 127 blobArray.push_back(pBlob);
mbedalvaro 28:44b7b6e35548 128
mbedalvaro 28:44b7b6e35548 129 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 28:44b7b6e35548 130 numBlobs=blobArray.size();
mbedalvaro 28:44b7b6e35548 131 }
mbedalvaro 28:44b7b6e35548 132
mbedalvaro 1:a4050fee11f7 133 void blobConfig::addOneRigidLoopFollowing() {
mbedalvaro 1:a4050fee11f7 134 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 14:0fc33a3a7b4b 135 pBlob->createBlob(blobArray.size(), SPOT_FOLLOWING, vector2Df(CENTER_AD_MIRROR_X+100*blobArray.size(), CENTER_AD_MIRROR_Y+100*blobArray.size()), vector2Df(0,0));
mbedalvaro 1:a4050fee11f7 136 // add this relaxing loop to the present config:
mbedalvaro 1:a4050fee11f7 137 blobArray.push_back(pBlob);
mbedalvaro 1:a4050fee11f7 138
mbedalvaro 1:a4050fee11f7 139 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 1:a4050fee11f7 140 numBlobs=blobArray.size();
mbedalvaro 1:a4050fee11f7 141 }
mbedalvaro 0:345b3bc7a0ea 142
mbedalvaro 5:73cd58b58f95 143 void blobConfig::addOneRigidLoopTest() {
mbedalvaro 5:73cd58b58f95 144 rigidLoop* pBlob= new rigidLoop();
mbedalvaro 12:0de9cd2bced5 145 pBlob->createBlob(blobArray.size(), SPOT_TEST, vector2Df(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y), vector2Df(0,0));
mbedalvaro 5:73cd58b58f95 146 // add this relaxing loop to the present config:
mbedalvaro 5:73cd58b58f95 147 blobArray.push_back(pBlob);
mbedalvaro 5:73cd58b58f95 148
mbedalvaro 5:73cd58b58f95 149 // update auxiliary variable numBlobs (just for easy reference):
mbedalvaro 5:73cd58b58f95 150 numBlobs=blobArray.size();
mbedalvaro 5:73cd58b58f95 151 }
mbedalvaro 5:73cd58b58f95 152
mbedalvaro 0:345b3bc7a0ea 153
mbedalvaro 0:345b3bc7a0ea 154 // ==================================================================================================================================================
mbedalvaro 0:345b3bc7a0ea 155
mbedalvaro 0:345b3bc7a0ea 156
mbedalvaro 1:a4050fee11f7 157 void blobConfig::allKill() { // this put all the blobs in "dead" mode, meaning that neither rendering nor update is done (but they are not deleted).
mbedalvaro 1:a4050fee11f7 158 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 1:a4050fee11f7 159 blobArray[i]->render = false;
mbedalvaro 1:a4050fee11f7 160 blobArray[i]->standByMode = false;
mbedalvaro 1:a4050fee11f7 161 }
mbedalvaro 1:a4050fee11f7 162 }
mbedalvaro 0:345b3bc7a0ea 163 void blobConfig::allAlive() {
mbedalvaro 1:a4050fee11f7 164 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 1:a4050fee11f7 165 blobArray[i]->render = true;
mbedalvaro 1:a4050fee11f7 166 blobArray[i]->standByMode = true;
mbedalvaro 1:a4050fee11f7 167 }
mbedalvaro 1:a4050fee11f7 168 }
mbedalvaro 1:a4050fee11f7 169
mbedalvaro 0:345b3bc7a0ea 170 void blobConfig::allStandBy() {
mbedalvaro 1:a4050fee11f7 171 for (int i=0; i<blobArray.size(); i++) blobArray[i]->standByMode = true;
mbedalvaro 0:345b3bc7a0ea 172 }
mbedalvaro 0:345b3bc7a0ea 173
mbedalvaro 0:345b3bc7a0ea 174 void blobConfig::allResume() {
mbedalvaro 1:a4050fee11f7 175 for (int i=0; i<blobArray.size(); i++) blobArray[i]->standByMode = false;
mbedalvaro 0:345b3bc7a0ea 176 }
mbedalvaro 0:345b3bc7a0ea 177
mbedalvaro 1:a4050fee11f7 178 void blobConfig::allVisible() {
mbedalvaro 1:a4050fee11f7 179 for (int i=0; i<blobArray.size(); i++) blobArray[i]->render = true;
mbedalvaro 0:345b3bc7a0ea 180 }
mbedalvaro 0:345b3bc7a0ea 181
mbedalvaro 0:345b3bc7a0ea 182 void blobConfig::allInvisible() { // note that they may continue to evolve
mbedalvaro 1:a4050fee11f7 183 for (int i=0; i<blobArray.size(); i++) blobArray[i]->render = false;
mbedalvaro 0:345b3bc7a0ea 184 }
mbedalvaro 0:345b3bc7a0ea 185
mbedalvaro 25:74cb85b85fd2 186 void blobConfig::allSetColor(unsigned char c) {
mbedalvaro 25:74cb85b85fd2 187 for (int i=0; i<blobArray.size(); i++) blobArray[i]->setColor(c);
mbedalvaro 25:74cb85b85fd2 188 }
mbedalvaro 25:74cb85b85fd2 189
mbedalvaro 1:a4050fee11f7 190 void blobConfig::update() { // update dynamics of the blob
mbedalvaro 1:a4050fee11f7 191 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 3:b44ff6de81bd 192 if (blobArray[i]->standByMode==false) blobArray[i]->update();
mbedalvaro 1:a4050fee11f7 193 }
mbedalvaro 0:345b3bc7a0ea 194 }
mbedalvaro 0:345b3bc7a0ea 195
mbedalvaro 1:a4050fee11f7 196 void blobConfig::draw() { // draw uses the opengl like renderer (if any), and save projected trajectory in the LaserSensingTrajectory object of each blob
mbedalvaro 1:a4050fee11f7 197 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 1:a4050fee11f7 198 if (blobArray[i]->render==true) blobArray[i]->draw();
mbedalvaro 1:a4050fee11f7 199 }
mbedalvaro 0:345b3bc7a0ea 200 }
mbedalvaro 0:345b3bc7a0ea 201
mbedalvaro 1:a4050fee11f7 202 void blobConfig::sendConfData() {
mbedalvaro 1:a4050fee11f7 203 // For the time being, only "per blob" data sending:
mbedalvaro 1:a4050fee11f7 204 // (b) Per-spot sending of data (note: both are NOT exclusive; so if we want just packaged data, we need to make all the spot STOP sending data.
mbedalvaro 18:d72935b13858 205 for (int i=0; i<blobArray.size(); i++) {
mbedalvaro 1:a4050fee11f7 206 if (blobArray[i]->render==true) blobArray[i]->sendData(); // a blob that is in stand-by mode may send data (good for testing with a fixed loop)
mbedalvaro 1:a4050fee11f7 207 }
mbedalvaro 0:345b3bc7a0ea 208 }
mbedalvaro 0:345b3bc7a0ea 209
mbedalvaro 0:345b3bc7a0ea 210
mbedalvaro 0:345b3bc7a0ea 211
mbedalvaro 0:345b3bc7a0ea 212