defrotate_z(self, angle):"""Rotate mesh about the z-axis.
Parameters
----------
angle : float
Angle in degrees to rotate about the z-axis.
"""
axis_rotation(self.points, angle, inplace=True, axis='z')
defaxis_rotation(points, angle, inplace=False, deg=True, axis='z'):"""Rotate points angle (in deg) about an axis."""
axis = axis.lower()# Copy original array to if not inplaceifnot inplace:
points = points.copy()# Convert angle to radiansif deg:
angle *= np.pi /180if axis =='x':
y = points[:,1]* np.cos(angle)- points[:,2]* np.sin(angle)
z = points[:,1]* np.sin(angle)+ points[:,2]* np.cos(angle)
points[:,1]= y
points[:,2]= z
elif axis =='y':
x = points[:,0]* np.cos(angle)+ points[:,2]* np.sin(angle)
z =- points[:,0]* np.sin(angle)+ points[:,2]* np.cos(angle)
points[:,0]= x
points[:,2]= z
elif axis =='z':
x = points[:,0]* np.cos(angle)- points[:,1]* np.sin(angle)
y = points[:,0]* np.sin(angle)+ points[:,1]* np.cos(angle)
points[:,0]= x
points[:,1]= y
else:raise Exception('invalid axis. Must be either "x", "y", or "z"')ifnot inplace:return points