code: function(t, line) {
      // If we're working in 2D
      if (typeof(line.direction) == 'undefined') { line = Line.create(line.to3D(), Vector.k); }
      var R = Matrix.Rotation(t, line.direction).elements;
      var C = line.pointClosestTo(this.anchor).elements;
      var A = this.anchor.elements, D = this.direction.elements;
      var C1 = C[0], C2 = C[1], C3 = C[2], A1 = A[0], A2 = A[1], A3 = A[2];
      var x = A1 - C1, y = A2 - C2, z = A3 - C3;
      return Line.create([
        C1 + R[0][0] * x + R[0][1] * y + R[0][2] * z,
        C2 + R[1][0] * x + R[1][1] * y + R[1][2] * z,
        C3 + R[2][0] * x + R[2][1] * y + R[2][2] * z
      ], [
        R[0][0] * D[0] + R[0][1] * D[1] + R[0][2] * D[2],
        R[1][0] * D[0] + R[1][1] * D[1] + R[1][2] * D[2],
        R[2][0] * D[0] + R[2][1] * D[1] + R[2][2] * D[2]
      ]);
    }
docs: Returns a copy of the line rotated by t radians about the given line. Works by finding the argument's closest point to this line's anchor point (call this C) and rotating the anchor about C. Also rotates the line's direction about the argument's. Be careful with this - the rotation axis' direction affects the outcome!