# Line CompositeΒΆ

```import numpy as np
from matplotlib import pyplot as plt
from matplotlib import colors
import s3dlib.surface as s3d
import s3dlib.cmap_utilities as cmu

#.. loop and spiral lines

# 1. Define function to examine .....................................
def loop(t) :
Rm = 0.2     # main radius
Rl = 0.6     # loop radius
nL = 12      # number of loops
tilt = 0.2   # loop tilt

theta = 2*np.pi*t + np.pi/2
phi = 2*np.pi*nL*t
psi = tilt*np.pi*np.sin(phi)

r = Rm + Rl*np.cos(phi)
z = Rl*np.sin(phi)
x = r*np.sin( theta + psi )
y = r*np.cos( theta + psi )

return x,y,z

def spiral(t) :
N = 12      # number of rotations
R = np.ones(len(t))
theta = 2*np.pi*N*t
phi = np.pi*t
return s3d.SphericalSurface.coor_convert([R,theta,phi],True)

return -s3d.SphericalSurface.coor_convert(xyz)[0]

# 2. Setup and map line .............................................
rez = 9
cy = colors.hsv_to_rgb([0.55,1,1])
mb = 'indigo'
BlToBk = cmu.hsv_cmap_gradient( [0.55,1,1,1], [0.55,1,0,0] )
mBlToBk = cmu.mirrored_cmap(BlToBk)

line1 = s3d.ParametricLine(rez,loop,lw=2)

line2 = s3d.ParametricLine(rez,spiral,lw=2)
line2.map_cmap_from_sequence(mBlToBk)

line3 = line2 + line1
line3.transform(rotate=s3d.eulerRot(0,-30))

# 3. Construct figure, add surface, and plot ........................

fig = plt.figure(figsize=plt.figaspect(1),facecolor='k')
info = str(line1) +'\n'+ str(line2) +'\n' + str(line3)
fig.text(0.975,0.975,info, ha='right', va='top', color='lightskyblue',
fontsize='smaller', multialignment='right')

ax = plt.axes(projection='3d',facecolor='k')
ax.set_axis_off()
minmax = (-0.8,0.8)
ax.set(xlim=minmax, ylim=minmax, zlim=minmax )
ax.view_init(elev=45)