//-------------------------------------------------------------- ofPolyline testApp::freqArc( vector<float> &_vector, const ofPoint &_center, float _angleBegin, float _angleEnd, float _minRad, bool _bSmooth){ ofPolyline line; float angle = ofWrapRadians(_angleBegin); float step = (ofWrapRadians(_angleEnd) - angle)/((float)_vector.size()); float scale = 1.0f; ofPoint start = ofPoint(_center.x + _minRad * cos(angle), _center.y + _minRad * sin(angle)); ofPoint end = ofPoint(_center.x + _minRad * cos(_angleEnd), _center.y + _minRad * sin(_angleEnd)); line.addVertex( start ); for (int i = 0; i < _vector.size(); i++){ float value = ofMap(_vector[i]*scale, 0.0, 60.0f, _minRad, _minRad*2); ofPoint p = _center; p.x += value * cos(angle); p.y += value * sin(angle); angle += step; if (_bSmooth){ line.curveTo( p ); } else { line.addVertex(p); } } line.addVertex( end ); return line; }
//-------------------------------------------------- float ofAngleDifferenceRadians(float currentAngle, float targetAngle) { return ofWrapRadians(targetAngle - currentAngle); }