Mercurial > hg > soniczoomios
diff grid.mm @ 39:df7c08faf541
MIDI, small improvements.
author | Robert Tubb <rt300@eecs.qmul.ac.uk> |
---|---|
date | Thu, 11 Apr 2013 16:56:21 +0100 |
parents | 0dfe9e0c01aa |
children | af06bb942d58 |
line wrap: on
line diff
--- a/grid.mm Wed Apr 10 18:57:05 2013 +0100 +++ b/grid.mm Thu Apr 11 16:56:21 2013 +0100 @@ -33,8 +33,9 @@ pixSize.setCoord(ofGetWidth(), ofGetHeight()); - //set scale and position to random - scale = 15500.0; + //set scale to random + double scaleLevel = (ofRandomf() + 1.00001)*0.5*paramBitDepth; + scale = pow(2.0, scaleLevel*paramBitDepth); smallestGridSpacing = 3; //pixels @@ -60,11 +61,16 @@ viewWasChanged(); calculateInterpolateLevel(); + + // log the starting zoom level + eventLogger.logEvent(ZOOM,centre, scale); + } - +//-------------------------------------------------------------- template <typename T> int sgn(T val) { return (T(0) < val) - (val < T(0)); } + //-------------------------------------------------------------- double Grid::calculateInterpolateLevel(){ if(interpolateMode == INTERPOLATE_GRID){ @@ -80,6 +86,39 @@ } } //-------------------------------------------------------------- +TwoVector Grid::getCoordForPresetSave(){ // bad functions get bad names + + // + TwoVector coord = calculateCoordFromParams(getParams()); + return coord; + +} +//-------------------------------------------------------------- +void Grid::setScale(double scaleLevel){ + + // random + //double p = scaleLevel*paramBitDepth*paramsPerDim*0.5; + + + if(scaleLevel > paramBitDepth || scaleLevel < 0){ + cout << "Error: Bad scale level: " << scaleLevel << "\n"; + scaleLevel = 5; + } + + scale = pow(2.0, scaleLevel*paramsPerDim); + + // update view size using centre + // and scale... + size.x = ofGetWidth()*scale; // zooming in, size gets SMALLER (view less) + size.y = ofGetHeight()*scale; + + + + viewWasChanged(); + calculateInterpolateLevel(); + eventLogger.logEvent(ZOOM, centre, scale); +} +//-------------------------------------------------------------- void Grid::setInterpolation(interpolateModeType mode){ interpolateMode = mode; viewWasChanged(); @@ -493,26 +532,26 @@ if(size.x > maxValue*2.0){ - cout << "maxZoom\n"; + maxZoom = true; size.x = maxValue*2.0; // need to also set y size back to } if(size.y > maxValue*2.0){ - cout << "maxZoom\n"; + maxZoom = true; size.y = maxValue*2.0; } if(size.x < minValue){ - cout << "min Zoom\n"; + minZoom = true; size.x = minValue; // need to also set y size back to } if(size.y < minValue){ minZoom = true; - cout << "min Zoom\n"; + size.y = minValue; }