#include "lineSegmenter.h" const vector & lineSegmenter::getSegments(int num,float coverage, float phase){ //num - number of segments //coverage - amount that each segment fills it's slot from 0-1 //phase - from 0-1 //if the path is closed, we can make a segment that crosses the end/beginning //however we want to be able to deal with open paths /* segments 0...n - 1 phase 0...1 phase 0 segment 0 is (0 -> coverage) / n segment n - 1 is ((0 -> coverage) + (n-1)) /n phase 1: has to be the loop target, it has to look identical segment 0 is (1 -> coverage) / n segment n - 1 is (1 - > coverage) + (n-1) */ segments.clear(); for (int i=0;i1 float endIndex=line.getIndexAtPercent(endPoint>1.0f?endPoint-1.0f:endPoint); ofPolyline segment; segment.addVertex(line.getPointAtIndexInterpolated(startIndex)); for (int j=(int)ceil(startIndex);j<(endPoint>1?line.size():(int)ceil(endIndex));j++){ segment.addVertex(line[j]); } if (endPoint>1){ segments.push_back(segment); segment.clear(); for (int j=0;j<(int)ceil(endIndex);j++){ segment.addVertex(line[j]); } segment.addVertex(line.getPointAtIndexInterpolated(endIndex)); } else { segment.addVertex(line.getPointAtIndexInterpolated(endIndex)); } segments.push_back(segment); } return segments; } void lineSegmenter::draw(){ line.draw(); return; } int lineSegmenter::size(){ return line.size(); } const vector & colourLineSegmenter::getSegments(int num,float coverage, float phase){ segments.clear(); for (int i=0;i1 float endIndex=line.getIndexAtPercent(endPoint>1.0f?endPoint-1.0f:endPoint); colourPolyline segment; segment.addVertex(line.getPointAtIndexInterpolated(startIndex),line.getColourAtIndexInterpolated(startIndex)); for (int j=(int)ceil(startIndex);j<(endPoint>1?line.size():(int)ceil(endIndex));j++){ segment.addVertex(line[j],line.getColourAt(j)); } if (endPoint>1){ segments.push_back(segment); segment.clear(); for (int j=0;j<(int)ceil(endIndex);j++){ segment.addVertex(line[j],line.getColourAt(j)); } segment.addVertex(line.getPointAtIndexInterpolated(endIndex),line.getColourAtIndexInterpolated(endIndex)); } else { segment.addVertex(line.getPointAtIndexInterpolated(endIndex),line.getColourAtIndexInterpolated(endIndex) ); } segments.push_back(segment); } return segments; } void colourLineSegmenter::draw(){ line.draw(); return; } int colourLineSegmenter::size(){ return line.size(); } /* */