# Line to Filled Line Surface ConstructionΒΆ

The Sliced Polar Surface example surface was constructed by mapping a base PolarSurface object. Being a ruled surface, the surface may be alternatively constructed using the line method get_surface_to_line from vertical and helical lines. This alternative provides a smoother surface along the origin where the edges are explicitly defined.

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

#.. Alternative Polar Surface Construction

# 1. Define functions to examine ....................................

def vertical_line(t):
x = np.zeros(len(t))
y = np.zeros(len(t))
z = 2*t - 1
return x,y, 10*z

def coil_line(t,k) :
T = 2*k*np.pi*t
x, y = np.cos(T), np.sin(T)
z = 2*t - 1
return x,y, 10*z

coil = lambda t : coil_line(t,3)

# 2. Setup and map surfaces .........................................
rez=5
purple2green = cmu.hue_cmap(lowHue="blueviolet", hiHue='+g',name="purple_green")

line_1 = s3d.ParametricLine(rez,vertical_line,color='firebrick')
line_2 = s3d.ParametricLine(rez,coil,color='teal')
lines = line_1 + line_2
lines.set_linewidth(4)

edges = line_1.get_surface_to_line(line_2).edges # create temp surface for 'simple' edges.
edges.set_color('k')

surface = line_1.get_surface_to_line(line_2,lrez=5).triangulate()
surface.map_cmap_from_op( lambda xyz : xyz[2], purple2green )

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

minmax,ticks=(-1,1), [-1,-.5,0,0.5,1]
fig = plt.figure(figsize=(8,4))
label = [ str(line_1) +'\n' + str(line_2) +'\n' + str(edges) , str(surface) ]

for i in range(2):
fig.text(0.5*i+0.475,0.975,label[i], ha='right', va='top', fontsize='smaller', multialignment='right')