diff options
| author | Tim Redfern <tim@getdrop.com> | 2017-08-31 10:08:40 +0100 |
|---|---|---|
| committer | Tim Redfern <tim@getdrop.com> | 2017-08-31 10:08:40 +0100 |
| commit | 742e27767fd4208afe99ac42f243b88eef0ed7b3 (patch) | |
| tree | 1ba8dc83dad0a0af943b6fe28a1682a74e614929 /gui | |
| parent | b0d54aadaf9dfb3b2f14974f55b3a725619ea445 (diff) | |
bezier movement
Diffstat (limited to 'gui')
| -rw-r--r-- | gui/.DS_Store | bin | 6148 -> 8196 bytes | |||
| -rw-r--r-- | gui/src/chainImage.cpp | 63 | ||||
| -rw-r--r-- | gui/src/chainImage.h | 11 |
3 files changed, 66 insertions, 8 deletions
diff --git a/gui/.DS_Store b/gui/.DS_Store Binary files differindex 126c3ea..c14ff44 100644 --- a/gui/.DS_Store +++ b/gui/.DS_Store diff --git a/gui/src/chainImage.cpp b/gui/src/chainImage.cpp index 643bb2e..032b54c 100644 --- a/gui/src/chainImage.cpp +++ b/gui/src/chainImage.cpp @@ -19,14 +19,43 @@ void chainImage::start(){ time=ofGetElapsedTimef(); setUseTexture(true); scale=linkScale; + + path.clear(); + + path.addVertex(linkPos); + //path.addVertex(linkPos+(link->linkPos*linkScale)); + + ofPoint destination=linkPos+(link->linkPos*linkScale); + ofPoint previous=linkPos+(link->linkPos*linkScale*(1.0f-BEZIER_IN)); + + path.bezierTo( + linkPos.x*(1.0f+BEZIER_OUT),linkPos.y*(1.0f+BEZIER_OUT), + previous.x,previous.y, + destination.x,destination.y); + + //totalframes=log(1.0f/256)/log(decayRatio); + //framecount=0; } bool chainImage::update(float decayRatio){ scale*=decayRatio; + //framecount++; + + //find n such that decayRatio^n=1/256 + //logarithm of x base b = log(x)/log(b) + + //log(decayRatio,decayRatio^n) + + //n = log(decayRatio,1/256) + + transition=-(scale-linkScale)/(linkScale-(linkScale*link->linkScale)); + //transition=min(1.0f,((float)framecount)/totalframes); + + if (scale>linkScale*link->linkScale) return false; else { transition = 1.0f; @@ -35,9 +64,13 @@ bool chainImage::update(float decayRatio){ } ofVec3f chainImage::getTransform(){ - ofVec3f _scaledTarget = link->linkPos * linkScale; + //ofVec3f _scaledTarget = link->linkPos * linkScale; - return linkPos + ( _scaledTarget * transition ); + //return linkPos + ( _scaledTarget * transition ); + + //ofPoint + + return path.getPointAtPercent(transition); } float chainImage::getScale(){ @@ -328,6 +361,24 @@ void chainImageSet::keyPressed(ofKeyEventArgs &keyargs){ case OF_KEY_RIGHT: selected->linkPos.x++; break; + case OF_KEY_BACKSPACE:{ + images.clear(); + /* + auto previous=selected; + previous--; + if (previous==images.end()){ + previous=images.end()--; + } + previous->link=selected->link; + printf("DELETED: %s \n",selected->filename.c_str()); + images.erase(selected); + selected=previous++; + if (selected==images.end()){ + selected=images.begin(); + } + break; + */ + } case 's': case 83: { //printf("Saving... keyargs modifiers:%i\n",keyargs.modifiers); @@ -455,13 +506,13 @@ bool chainImageSet::loadJson(std::string _filename){ } void chainImageSet::update(){ - float decay_factor=0.995; - if (images.size()){ - if (currentImage->update(decay_factor)){ //if returns true, switch images + + if (images.size()){ + if (currentImage->update(decayFactor)){ //if returns true, switch images currentImage=currentImage->link; currentImage->start(); ofLogNotice() << "Switched images"; - currentImage->update(decay_factor); + currentImage->update(decayFactor); } } } diff --git a/gui/src/chainImage.h b/gui/src/chainImage.h index 2ac3566..8eec4bf 100644 --- a/gui/src/chainImage.h +++ b/gui/src/chainImage.h @@ -5,7 +5,9 @@ #define THUMB_BORDER_RATIO 0.8 #define THUMB_SIZE 160 -#define DEFAULT_FADEIN 0.3 +#define DEFAULT_FADEIN 1.0 +#define BEZIER_OUT 0.2 +#define BEZIER_IN 0.5 class chainImage : public ofImage{ //todo: threaded image loader @@ -57,7 +59,9 @@ class chainImage : public ofImage{ float time; float scale; - + ofPolyline path; + + //int totalframes,framecount; }; @@ -67,6 +71,7 @@ class chainImageSet{ currentDefaultImageRatio=0.3; filename=""; outputSize=ofPoint(1024,576); + decayFactor=.999; } void drawGui(); void drawOutput(); @@ -94,4 +99,6 @@ class chainImageSet{ std::string filename; chainImage *currentImage; + + float decayFactor; };
\ No newline at end of file |
