/*
systym: the NIH-syndrome javascript library
copyright (c) 2009 Chris Rose-Mathew
*/

//===================================================
// class: Curve
//===================================================
// A curve is defined by an array of control points
// TODO - class methods, not instance methods
//===================================================
function Curve(pointArray)
{
	if (pointArray != null)
	{
		this.points = pointArray
	}
	
	this.addPoint = function(point)
	{
		if (!this.points)
			this.points = new Array();
		this.points.push(point);
	}
	
	this.resolve = function(key)
	{
		if (this.points == null || this.points.length == 0)
			return new Point(0,0,0);
			
		if (key >= this.points.length - 1)
			return this.points[this.points.length - 1];
			
		var low = Math.floor(key);
		var high = low + 1;
		var soFar = key - low;
		var p1 = this.points[low];
		var p2 = this.points[high];
		var ret = new Point(p1.x, p1.y, p1.z);
		ret.x = p1.x + ((p2.x - p1.x) * soFar);
		ret.y = p1.y + ((p2.y - p1.y) * soFar);
		ret.z = p1.z + ((p2.z - p1.z) * soFar);
		
		return ret;
	}
	
	this.at = this.resolve;
}

