Inner/Outer Surface ColormapΒΆ

This technique can be used to visualize the front and back of an orientable surface.

• mapping from normals uses the colormap half corresponding the surface side which is facing the view, based on the face normals relative to the view direction (direction=ax)
• shading also uses the relative direction to the view. In this case, the lighting source direction is the default since the direction argument has not been set.
```import numpy as np
from matplotlib import pyplot as plt
import s3dlib.surface as s3d
import s3dlib.cmap_utilities as cmu

#.. Binary colormap used to visualize the inner/outer surfaces.

# 1. Define function to examine .....................................

def twistFunction(rtz,twists=6) :
r,t,z = rtz
# Note: sliced surface needed due to discontinuity @ t=0 if twists is odd
thickness = 0.33
w = thickness*z
phi = 0.5*t*twists
R = 1 + w * np.cos(phi)
Z = w * np.sin(phi)
return R,t,Z

# 2. Setup and map surfaces .........................................
rez = 5
bcmap = cmu.binary_cmap('silver', 'sandybrown', name='slvr_brwn' )

surface = s3d.CylindricalSurface(rez, basetype='squ_s', cmap=bcmap)
surface.map_geom_from_op( twistFunction )

# 3. Construct figures, add surface, plot ...........................
minmax = (-.9,.9)

fig = plt.figure(figsize=plt.figaspect(1))
ax = plt.axes(projection='3d')
ax.set(xlim=minmax, ylim=minmax, zlim=minmax)
ax.set_axis_off()
ax.view_init(azim=-70)

surface.map_cmap_from_normals(direction=ax)