def rotate_around(self, axis, theta):
<EOL>x, y, z = self.x, self.y, self.z<EOL>u, v, w = axis.x, axis.y, axis.z<EOL>r2 = u**<NUM_LIT:2> + v**<NUM_LIT:2> + w**<NUM_LIT:2><EOL>r = math.sqrt(r2)<EOL>ct = math.cos(theta)<EOL>st = math.sin(theta) / r<EOL>dt = (u * x + v * y + w * z) * (<NUM_LIT:1> - ct) / r2<EOL>return Vector3((u * dt + x * ct + (-w * y + v * z) * st),<EOL>(v * dt + y * ct + (w * x - u * z) * st),<EOL>(w * dt + z * ct + (-v * x + u * y) * st))<EOL>
Return the vector rotated around axis through angle theta.

        Right hand rule applies.