def bisector_map
	    winding = 0
	    tangent_loop.each_cons(2).map do |v1,v2|
		k = v1[0]*v2[1] - v1[1]*v2[0]	# z-component of v1 x v2
		winding += k
		if v1 == v2			# collinear, same direction?
		    bisector = Vector[-v1[1], v1[0]]
		    block_given? ? (bisector * yield(bisector, 1)) : bisector
		elsif 0 == k			# collinear, reverse direction
		    nil
		else
		    bisector_y = (v2[1] - v1[1])/k

		    # If v1 or v2 happens to be horizontal, then the other one must be used when calculating
		    #  the x-component of the bisector (to avoid a divide by zero). But, comparing floats
		    #  with zero is problematic, so use the one with the largest y-component instead checking
		    #  for a y-component equal to zero.
		    v = (v2[1].abs > v1[1].abs) ? v2 : v1

		    bisector = Vector[(v[0]*bisector_y - 1)/v[1], bisector_y]
		    block_given? ? (bisector * yield(bisector, k)) : bisector
		end
	    end
	end
def bisector_map
	    winding = 0
	    tangent_loop.each_cons(2).map do |v1,v2|
		k = v1[0]*v2[1] - v1[1]*v2[0]	# z-component of v1 x v2
		winding += k
		if v1 == v2			# collinear, same direction?
		    bisector = Vector[-v1[1], v1[0]]
		    block_given? ? (bisector * yield(bisector, 1)) : bisector
		elsif 0 == k			# collinear, reverse direction
		    nil
		else
		    bisector_y = (v2[1] - v1[1])/k

		    # If v1 or v2 happens to be horizontal, then the other one must be used when calculating
		    #  the x-component of the bisector (to avoid a divide by zero). But, comparing floats
		    #  with zero is problematic, so use the one with the largest y-component instead checking
		    #  for a y-component equal to zero.
		    v = (v2[1].abs > v1[1].abs) ? v2 : v1

		    bisector = Vector[(v[0]*bisector_y - 1)/v[1], bisector_y]
		    block_given? ? (bisector * yield(bisector, k)) : bisector
		end
	    end
	end
Generate bisectors and k values with an optional mapping block
 @note If the {Polyline} isn't closed (the normal case), then the first and
   last vertices will be given bisectors that are perpendicular to themselves.
 @return [Array<Vector>]   the unit {Vector}s representing the angle bisector of each vertex