Alvaro Cassinelli
/
skinGames_forktest
just a test
Fork of scoreLight_Advanced by
blobConfig.cpp@0:345b3bc7a0ea, 2012-03-28 (annotated)
- Committer:
- mbedalvaro
- Date:
- Wed Mar 28 14:40:01 2012 +0000
- Revision:
- 0:345b3bc7a0ea
- Child:
- 1:a4050fee11f7
This version (using rigid frame, base and child classes, etc) works, but the blob is strangely smaller. Need to check this.
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:345b3bc7a0ea | 6 | //blobArray.clear();// there is no need to do this, the vector does not contains anything here. |
mbedalvaro | 0:345b3bc7a0ea | 7 | |
mbedalvaro | 0:345b3bc7a0ea | 8 | } |
mbedalvaro | 0:345b3bc7a0ea | 9 | |
mbedalvaro | 0:345b3bc7a0ea | 10 | blobConfig::~blobConfig() { |
mbedalvaro | 0:345b3bc7a0ea | 11 | clearConfig(); |
mbedalvaro | 0:345b3bc7a0ea | 12 | |
mbedalvaro | 0:345b3bc7a0ea | 13 | } |
mbedalvaro | 0:345b3bc7a0ea | 14 | |
mbedalvaro | 0:345b3bc7a0ea | 15 | |
mbedalvaro | 0:345b3bc7a0ea | 16 | |
mbedalvaro | 0:345b3bc7a0ea | 17 | // =========================================== STANDARD CONFIGURATIONS ============================================================================= |
mbedalvaro | 0:345b3bc7a0ea | 18 | |
mbedalvaro | 0:345b3bc7a0ea | 19 | void blobConfig::computeBoundingBox() { |
mbedalvaro | 0:345b3bc7a0ea | 20 | for(int i=0; i<blobArray.size(); i++){ |
mbedalvaro | 0:345b3bc7a0ea | 21 | blobArray[i]->computeBoundingBox(); |
mbedalvaro | 0:345b3bc7a0ea | 22 | } |
mbedalvaro | 0:345b3bc7a0ea | 23 | } |
mbedalvaro | 0:345b3bc7a0ea | 24 | |
mbedalvaro | 0:345b3bc7a0ea | 25 | void blobConfig::clearConfig() { |
mbedalvaro | 0:345b3bc7a0ea | 26 | 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 | 0:345b3bc7a0ea | 27 | blobArray.clear(); |
mbedalvaro | 0:345b3bc7a0ea | 28 | numBlobs=0;// this is just equal to blobArray.size() |
mbedalvaro | 0:345b3bc7a0ea | 29 | } |
mbedalvaro | 0:345b3bc7a0ea | 30 | |
mbedalvaro | 0:345b3bc7a0ea | 31 | void blobConfig::addOneElasticLoopRelax(){ |
mbedalvaro | 0:345b3bc7a0ea | 32 | elasticLoop* pLoopRelax= new elasticLoop(); |
mbedalvaro | 0:345b3bc7a0ea | 33 | pLoopRelax->createBlob(blobArray.size(), RELAX, vector2D(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y)); |
mbedalvaro | 0:345b3bc7a0ea | 34 | // add this relaxing loop to the present config: |
mbedalvaro | 0:345b3bc7a0ea | 35 | blobArray.push_back(pLoopRelax); |
mbedalvaro | 0:345b3bc7a0ea | 36 | |
mbedalvaro | 0:345b3bc7a0ea | 37 | // update auxiliary variable numBlobs (just for easy reference): |
mbedalvaro | 0:345b3bc7a0ea | 38 | numBlobs=blobArray.size(); |
mbedalvaro | 0:345b3bc7a0ea | 39 | |
mbedalvaro | 0:345b3bc7a0ea | 40 | } |
mbedalvaro | 0:345b3bc7a0ea | 41 | |
mbedalvaro | 0:345b3bc7a0ea | 42 | |
mbedalvaro | 0:345b3bc7a0ea | 43 | void blobConfig::addOneElasticLoopContract(){ |
mbedalvaro | 0:345b3bc7a0ea | 44 | elasticLoop* pLoopRelax= new elasticLoop(); |
mbedalvaro | 0:345b3bc7a0ea | 45 | pLoopRelax->createBlob(blobArray.size(), CONTRACT, vector2D(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y)); |
mbedalvaro | 0:345b3bc7a0ea | 46 | // add this relaxing loop to the present config: |
mbedalvaro | 0:345b3bc7a0ea | 47 | blobArray.push_back(pLoopRelax); |
mbedalvaro | 0:345b3bc7a0ea | 48 | |
mbedalvaro | 0:345b3bc7a0ea | 49 | // update auxiliary variable numBlobs (just for easy reference): |
mbedalvaro | 0:345b3bc7a0ea | 50 | numBlobs=blobArray.size(); |
mbedalvaro | 0:345b3bc7a0ea | 51 | } |
mbedalvaro | 0:345b3bc7a0ea | 52 | |
mbedalvaro | 0:345b3bc7a0ea | 53 | void blobConfig::addOneElasticLoopContractCentral(){ |
mbedalvaro | 0:345b3bc7a0ea | 54 | elasticLoop* pLoopRelax= new elasticLoop(); |
mbedalvaro | 0:345b3bc7a0ea | 55 | pLoopRelax->createBlob(blobArray.size(), CONTRACT_CENTRAL, vector2D(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y)); |
mbedalvaro | 0:345b3bc7a0ea | 56 | // add this relaxing loop to the present config: |
mbedalvaro | 0:345b3bc7a0ea | 57 | blobArray.push_back(pLoopRelax); |
mbedalvaro | 0:345b3bc7a0ea | 58 | |
mbedalvaro | 0:345b3bc7a0ea | 59 | // update auxiliary variable numBlobs (just for easy reference): |
mbedalvaro | 0:345b3bc7a0ea | 60 | numBlobs=blobArray.size(); |
mbedalvaro | 0:345b3bc7a0ea | 61 | } |
mbedalvaro | 0:345b3bc7a0ea | 62 | |
mbedalvaro | 0:345b3bc7a0ea | 63 | void blobConfig::addOneElasticContourFollowing(){ |
mbedalvaro | 0:345b3bc7a0ea | 64 | |
mbedalvaro | 0:345b3bc7a0ea | 65 | elasticLoop* pLoopRelax= new elasticLoop(); |
mbedalvaro | 0:345b3bc7a0ea | 66 | pLoopRelax->createBlob(blobArray.size(), CONTOUR_FOLLOWING, vector2D(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y)); |
mbedalvaro | 0:345b3bc7a0ea | 67 | // add this relaxing loop to the present config: |
mbedalvaro | 0:345b3bc7a0ea | 68 | blobArray.push_back(pLoopRelax); |
mbedalvaro | 0:345b3bc7a0ea | 69 | |
mbedalvaro | 0:345b3bc7a0ea | 70 | // update auxiliary variable numBlobs (just for easy reference): |
mbedalvaro | 0:345b3bc7a0ea | 71 | numBlobs=blobArray.size(); |
mbedalvaro | 0:345b3bc7a0ea | 72 | } |
mbedalvaro | 0:345b3bc7a0ea | 73 | |
mbedalvaro | 0:345b3bc7a0ea | 74 | |
mbedalvaro | 0:345b3bc7a0ea | 75 | void blobConfig:: addOneElasticContourFollowingFAST(){ |
mbedalvaro | 0:345b3bc7a0ea | 76 | elasticLoop* pLoopRelax= new elasticLoop(); |
mbedalvaro | 0:345b3bc7a0ea | 77 | pLoopRelax->createBlob(blobArray.size(), CONTOUR_FOLLOWING_FAST, vector2D(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y)); |
mbedalvaro | 0:345b3bc7a0ea | 78 | // add this relaxing loop to the present config: |
mbedalvaro | 0:345b3bc7a0ea | 79 | blobArray.push_back(pLoopRelax); |
mbedalvaro | 0:345b3bc7a0ea | 80 | |
mbedalvaro | 0:345b3bc7a0ea | 81 | // update auxiliary variable numBlobs (just for easy reference): |
mbedalvaro | 0:345b3bc7a0ea | 82 | numBlobs=blobArray.size(); |
mbedalvaro | 0:345b3bc7a0ea | 83 | } |
mbedalvaro | 0:345b3bc7a0ea | 84 | |
mbedalvaro | 0:345b3bc7a0ea | 85 | void blobConfig::addOneElasticBouncing(){ |
mbedalvaro | 0:345b3bc7a0ea | 86 | elasticLoop* pLoopRelax= new elasticLoop(); |
mbedalvaro | 0:345b3bc7a0ea | 87 | pLoopRelax->createBlob(blobArray.size(), BOUNCING, vector2D(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y)); |
mbedalvaro | 0:345b3bc7a0ea | 88 | // add this relaxing loop to the present config: |
mbedalvaro | 0:345b3bc7a0ea | 89 | blobArray.push_back(pLoopRelax); |
mbedalvaro | 0:345b3bc7a0ea | 90 | |
mbedalvaro | 0:345b3bc7a0ea | 91 | // update auxiliary variable numBlobs (just for easy reference): |
mbedalvaro | 0:345b3bc7a0ea | 92 | numBlobs=blobArray.size(); |
mbedalvaro | 0:345b3bc7a0ea | 93 | } |
mbedalvaro | 0:345b3bc7a0ea | 94 | |
mbedalvaro | 0:345b3bc7a0ea | 95 | |
mbedalvaro | 0:345b3bc7a0ea | 96 | |
mbedalvaro | 0:345b3bc7a0ea | 97 | // ================================================================================================================================================== |
mbedalvaro | 0:345b3bc7a0ea | 98 | |
mbedalvaro | 0:345b3bc7a0ea | 99 | |
mbedalvaro | 0:345b3bc7a0ea | 100 | 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 | 0:345b3bc7a0ea | 101 | for(int i=0; i<blobArray.size(); i++){ |
mbedalvaro | 0:345b3bc7a0ea | 102 | blobArray[i]->render = false; |
mbedalvaro | 0:345b3bc7a0ea | 103 | blobArray[i]->standByMode = false; |
mbedalvaro | 0:345b3bc7a0ea | 104 | } |
mbedalvaro | 0:345b3bc7a0ea | 105 | } |
mbedalvaro | 0:345b3bc7a0ea | 106 | void blobConfig::allAlive() { |
mbedalvaro | 0:345b3bc7a0ea | 107 | for(int i=0; i<blobArray.size(); i++){ |
mbedalvaro | 0:345b3bc7a0ea | 108 | blobArray[i]->render = true; |
mbedalvaro | 0:345b3bc7a0ea | 109 | blobArray[i]->standByMode = true; |
mbedalvaro | 0:345b3bc7a0ea | 110 | } |
mbedalvaro | 0:345b3bc7a0ea | 111 | } |
mbedalvaro | 0:345b3bc7a0ea | 112 | |
mbedalvaro | 0:345b3bc7a0ea | 113 | void blobConfig::allStandBy() { |
mbedalvaro | 0:345b3bc7a0ea | 114 | for(int i=0; i<blobArray.size(); i++) blobArray[i]->standByMode = true; |
mbedalvaro | 0:345b3bc7a0ea | 115 | } |
mbedalvaro | 0:345b3bc7a0ea | 116 | |
mbedalvaro | 0:345b3bc7a0ea | 117 | void blobConfig::allResume() { |
mbedalvaro | 0:345b3bc7a0ea | 118 | for(int i=0; i<blobArray.size(); i++) blobArray[i]->standByMode = false; |
mbedalvaro | 0:345b3bc7a0ea | 119 | } |
mbedalvaro | 0:345b3bc7a0ea | 120 | |
mbedalvaro | 0:345b3bc7a0ea | 121 | void blobConfig::allVisible() { |
mbedalvaro | 0:345b3bc7a0ea | 122 | for(int i=0; i<blobArray.size(); i++) blobArray[i]->render = true; |
mbedalvaro | 0:345b3bc7a0ea | 123 | } |
mbedalvaro | 0:345b3bc7a0ea | 124 | |
mbedalvaro | 0:345b3bc7a0ea | 125 | void blobConfig::allInvisible() { // note that they may continue to evolve |
mbedalvaro | 0:345b3bc7a0ea | 126 | for(int i=0; i<blobArray.size(); i++) blobArray[i]->render = false; |
mbedalvaro | 0:345b3bc7a0ea | 127 | } |
mbedalvaro | 0:345b3bc7a0ea | 128 | |
mbedalvaro | 0:345b3bc7a0ea | 129 | void blobConfig::update(){ // update dynamics of the blob |
mbedalvaro | 0:345b3bc7a0ea | 130 | for(int i=0; i<blobArray.size(); i++) { |
mbedalvaro | 0:345b3bc7a0ea | 131 | if ((blobArray[i]->render==true)&&(blobArray[i]->standByMode==false)) blobArray[i]->update(); |
mbedalvaro | 0:345b3bc7a0ea | 132 | } |
mbedalvaro | 0:345b3bc7a0ea | 133 | } |
mbedalvaro | 0:345b3bc7a0ea | 134 | |
mbedalvaro | 0:345b3bc7a0ea | 135 | void blobConfig::draw(){ // draw uses the opengl like renderer (if any), and save projected trajectory in the LaserSensingTrajectory object of each blob |
mbedalvaro | 0:345b3bc7a0ea | 136 | for(int i=0; i<blobArray.size(); i++) { |
mbedalvaro | 0:345b3bc7a0ea | 137 | if (blobArray[i]->render==true) blobArray[i]->draw(); |
mbedalvaro | 0:345b3bc7a0ea | 138 | } |
mbedalvaro | 0:345b3bc7a0ea | 139 | } |
mbedalvaro | 0:345b3bc7a0ea | 140 | |
mbedalvaro | 0:345b3bc7a0ea | 141 | void blobConfig::sendConfData(){ |
mbedalvaro | 0:345b3bc7a0ea | 142 | // For the time being, only "per blob" data sending: |
mbedalvaro | 0:345b3bc7a0ea | 143 | // (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 | 0:345b3bc7a0ea | 144 | for(int i=0; i<blobArray.size(); i++) { |
mbedalvaro | 0:345b3bc7a0ea | 145 | 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 | 0:345b3bc7a0ea | 146 | } |
mbedalvaro | 0:345b3bc7a0ea | 147 | } |
mbedalvaro | 0:345b3bc7a0ea | 148 | |
mbedalvaro | 0:345b3bc7a0ea | 149 | |
mbedalvaro | 0:345b3bc7a0ea | 150 | |
mbedalvaro | 0:345b3bc7a0ea | 151 |