docs: def rotate_around(self, axis, theta):
          """Return the vector rotated around axis through angle theta.
  
          Right hand rule applies.
          """
  
          # Adapted from equations published by Glenn Murray.
          # http://inside.mines.edu/~gmurray/ArbitraryAxisRotation/ArbitraryAxisRotation.html
          x, y, z = self.x, self.y, self.z
          u, v, w = axis.x, axis.y, axis.z
  
          # Extracted common factors for simplicity and efficiency
          r2 = u**2 + v**2 + w**2
          r = math.sqrt(r2)
          ct = math.cos(theta)
          st = math.sin(theta) / r
          dt = (u * x + v * y + w * z) * (1 - ct) / r2
          return Vector3((u * dt + x * ct + (-w * y + v * z) * st),
                         (v * dt + y * ct + (w * x - u * z) * st),
                         (w * dt + z * ct + (-v * x + u * y) * st))