#include "pointRecorder.h"


//------------------------------------------------------------------
pointRecorder::pointRecorder(){
	middlePoint = ofxPoint2f(0,0);
	angle = 0;
	maxNumPts = 50;
}

//------------------------------------------------------------------
void pointRecorder::update(){

}

//------------------------------------------------------------------
void pointRecorder::draw() {
	
	for (int i = 1; i < pts.size(); i++){
		ofFill();
		middlePoint.x = (.5 * pts[i].x) + (.5 * (pts[i-1].x));
		middlePoint.y = (.5 * pts[i].y) + (.5 * (pts[i-1].y));
		
		float radius = sqrt((pts[i-1].x - pts[i].x) * (pts[i-1].x - pts[i].x) + (pts[i-1].y - pts[i].y) * (pts[i-1].y - pts[i].y)) / 2;
		//ofCircle(middlePoint.x,middlePoint.y,radius);
		
		angle = atan2((pts[i].x - pts[i-1].x),(pts[i].y - pts[i-1].y));
		//ofDrawBitmapString(ofToString(angle), 5,5);
		
		ofxPoint2f pt_1_1 = ofxPoint2f(pts[i].x + radius * cos(angle) , pts[i].y + radius * sin(angle));
		ofxPoint2f pt_1_2 = ofxPoint2f(pts[i].x + radius * cos(angle+PI) , pts[i].y + radius * sin(angle+PI));
		
		ofxPoint2f pt_2_1 = ofxPoint2f(middlePoint.x + radius * cos(angle) , middlePoint.y + radius * sin(angle));
		ofxPoint2f pt_2_2 = ofxPoint2f(middlePoint.x + radius * cos(angle+PI) , middlePoint.y + radius * sin(angle+PI));
		
		ofxPoint2f pt_3_1 = ofxPoint2f(pts[i-1].x + radius * cos(angle) , pts[i-1].y + radius * sin(angle));
		ofxPoint2f pt_3_2 = ofxPoint2f(pts[i-1].x + radius * cos(angle+PI) , pts[i-1].y + radius * sin(angle+PI));
		
		//ofLine(pt_1.x,pt_1.y,pt_2.x,pt_2.y);
		//ofLine(pts[i].x,pts[i].y,pts[i-1].x,pts[i-1].y);
		ofBeginShape();
			ofVertex(pt_1_1.x,pt_1_1.y);
			ofVertex(pt_2_1.x,pt_2_1.y);
			ofVertex(pt_3_1.x,pt_3_1.y);
			ofVertex(pt_3_2.x,pt_3_2.y);
			ofVertex(pt_2_2.x,pt_2_2.y);
			ofVertex(pt_1_2.x,pt_1_2.y);
		ofEndShape(true);
	}
	ofFill();
	
}

//------------------------------------------------------------------
void pointRecorder::addPoint(ofPoint pt) {
	pts.push_back(pt);
	if (pts.size() > maxNumPts){
		pts.erase(pts.begin());
	}
}
