From 7f2fb4dc45faa9d87906b9e1006be851a5549534 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Thu, 18 Jan 2018 23:39:41 +0000 Subject: ofxClipper --- drawing/src/lineSegmenter.cpp | 4 ++++ drawing/src/lineSegmenter.h | 1 + drawing/src/main.cpp | 4 ++-- drawing/src/ofApp.cpp | 56 +++++++++++++++++++++++++++++++------------ drawing/src/ofApp.h | 5 +++- 5 files changed, 52 insertions(+), 18 deletions(-) (limited to 'drawing/src') diff --git a/drawing/src/lineSegmenter.cpp b/drawing/src/lineSegmenter.cpp index 47a9d62..7e0af7a 100644 --- a/drawing/src/lineSegmenter.cpp +++ b/drawing/src/lineSegmenter.cpp @@ -58,6 +58,10 @@ void lineSegmenter::draw(){ line.draw(); return; } +int lineSegmenter::size(){ + return line.size(); +} + /* diff --git a/drawing/src/lineSegmenter.h b/drawing/src/lineSegmenter.h index 25f3d55..5b2aab3 100644 --- a/drawing/src/lineSegmenter.h +++ b/drawing/src/lineSegmenter.h @@ -12,6 +12,7 @@ class lineSegmenter{ } const vector &getSegments(int num,float coverage, float phase); void draw(); + int size(); private: ofPolyline line; vector segments; diff --git a/drawing/src/main.cpp b/drawing/src/main.cpp index f9ba23c..50ef9f2 100644 --- a/drawing/src/main.cpp +++ b/drawing/src/main.cpp @@ -9,8 +9,8 @@ int main(int argc, char *argv[]){ ofGLFWWindowSettings settings; - settings.width = 600; - settings.height = 800; + settings.width = 1200; + settings.height = 900; shared_ptr mainWindow = ofCreateWindow(settings); diff --git a/drawing/src/ofApp.cpp b/drawing/src/ofApp.cpp index 43069d2..e888d4d 100644 --- a/drawing/src/ofApp.cpp +++ b/drawing/src/ofApp.cpp @@ -9,18 +9,24 @@ void ofApp::setup(){ vector paths= svg.getPaths(); for (int i=0;i outlines= paths[i].getOutline(); + for (int j=0;j outlines= paths[i].getOutline(); - for (int j=0;jgetSegments(numsegments,coverage,phase); for (auto segment=segments.begin();segment!=segments.end();segment++){ segment->draw(); - segmentsdrawn++; + segmentsdrawn+=1; + pointsdrawn+=segment->size(); } } + break; } case 1:{ + vector shapes; + for (auto shape=segmenters.begin();shape!=segmenters.end();shape++){ + auto segments=shape->getSegments(numsegments,coverage,phase); + for (auto segment=segments.begin();segment!=segments.end();segment++){ + shapes.push_back(*segment); + } + } + clipper.addPolylines(shapes,ClipperLib::ptSubject); + vector clipped = clipper.getClipped(ClipperLib::ctIntersection); + segmentsdrawn=clipped.size(); + for (auto& clip: clipped) + { + clip.draw(); + pointsdrawn+=clip.size(); + } + } + case 2:{ int w=ofRandom(1000); segmenters[w%segmenters.size()].draw(); + segmentsdrawn=1; + pointsdrawn+=segmenters[w%segmenters.size()].size(); + break; } } std::stringstream strm; - strm << "segments: "< segmenters; + vector mask; int numsegments; float coverage; int mode; + ofx::Clipper clipper; + ofxSyphonServer mainOutputSyphonServer; }; -- cgit v1.2.3