docs: function(sin, cos, range, origin) {
      var stepX = this.step(sin, cos, origin.x, origin.y, false);
      var stepY = this.step(cos, sin, origin.y, origin.x, true);
      
      var inspectX = [sin, cos, stepX, 1, 0, origin.dist, stepX.y];
      var inspectY = [sin, cos, stepY, 0, 1, origin.dist, stepY.x];
      var next = this.inspect.apply(this, (stepX.len2 < stepY.len2) ? inspectX : inspectY);
  
      if (next.dist > range) {
        return [origin];
      }
  
      return [origin].concat(this.ray(sin, cos, range, next));
    }