coord = function(x, y){
  if(!x) var x=0;
  if(!y) var y=0;
  return {x: x, y: y};
}

function B1(t){ return t*t*t }
function B2(t){ return 3*t*t*(1-t) }
function B3(t){ return 3*t*(1-t)*(1-t) }
function B4(t){ return (1-t)*(1-t)*(1-t) }

function getBezier(pct, C1, C2, C3, C4){
  var pos = new coord();
  pos.x = C1.x * B1(pct) + C2.x * B2(pct) + C3.x * B3(pct) + C4.x * B4(pct);
  pos.y = C1.y * B1(pct) + C2.y * B2(pct) + C3.y * B3(pct) + C4.y * B4(pct);
  return pos;
}

base_num_px = 0;
function drawBezier(C1, C2, C3, C4, num_px){
  if(!num_px) num_px = 100;
  for(var i=0; i<num_px; i++){
	document.write('<div id="bezierPixel'+(i+base_num_px)+'" style="top:-10px; left:-10px" class="bezierPixel"></div>');
  }

  for(var i=0; i<num_px; i++){
	pct = (1/num_px) * i;
	var pos = getBezier(pct, C1, C2, C3, C4);
	var obj = document.getElementById('bezierPixel'+(i+base_num_px) );
	obj.style.left = pos.x;
	obj.style.top = pos.y;
  }
  base_num_px += num_px;
}

function getSlope(p1, p2){
  ret = 0.0;

  dy = p2.y - p1.y;
  dx = p2.x - p1.x;

  ret = Math.atan2(dy, dx) * (180/Math.PI);

  //if(dx < 0 && dy < 0) ret *= -1;
  //if(dx > 0 && dy < 0) ret *= -1;
  //if(dx < 0 && dy > 0) ret = 360.0 - ret;
  //if(dx > 0 && dy > 0) ret = 360.0 - ret;

  return ret;
}
