code: function(t) {
  
              var start = this.start;
              var controlPoint1 = this.controlPoint1;
              var controlPoint2 = this.controlPoint2;
              var end = this.end;
  
              // shortcuts for `t` values that are out of range
              if (t <= 0) {
                  return [
                      new Curve(start, start, start, start),
                      new Curve(start, controlPoint1, controlPoint2, end)
                  ];
              }
  
              if (t >= 1) {
                  return [
                      new Curve(start, controlPoint1, controlPoint2, end),
                      new Curve(end, end, end, end)
                  ];
              }
  
              var dividerPoints = this.getSkeletonPoints(t);
  
              var startControl1 = dividerPoints.startControlPoint1;
              var startControl2 = dividerPoints.startControlPoint2;
              var divider = dividerPoints.divider;
              var dividerControl1 = dividerPoints.dividerControlPoint1;
              var dividerControl2 = dividerPoints.dividerControlPoint2;
  
              // return array with two new curves
              return [
                  new Curve(start, startControl1, startControl2, divider),
                  new Curve(divider, dividerControl1, dividerControl2, end)
              ];
          }
docs: Divides the curve into two at point defined by `t` between 0 and 1. Using de Casteljau's algorithm (http://math.stackexchange.com/a/317867). Additional resource: https://pomax.github.io/bezierinfo/#decasteljau