docs: def __bounce(self, **kwargs):
          """
              Bounce off of the shoreline.
  
              NOTE: This does not work, but left here for future implementation
  
              feature = Linestring of two points, being the line segment the particle hit.
              angle = decimal degrees from 0 (x-axis), couter-clockwise (math style)
          """
          start_point = kwargs.pop('start_point')
          hit_point = kwargs.pop('hit_point')
          end_point = kwargs.pop('end_point')
          feature = kwargs.pop('feature')
          distance = kwargs.pop('distance')
          angle = kwargs.pop('angle')
  
          # Figure out the angle of the shoreline here (beta)
          points_in_shore = map(lambda x: Point(x), list(feature.coords))
          points_in_shore = sorted(points_in_shore, key=lambda x: x.x)
  
          # The point on the left (least longitude is always the first Point)
          first_shore = points_in_shore[0]
          last_shore = points_in_shore[-1]
  
          shoreline_x = abs(abs(first_shore.x) - abs(last_shore.x))
          shoreline_y = abs(abs(first_shore.y) - abs(last_shore.y))
          beta = math.degrees(math.atan(shoreline_x / shoreline_y))
  
          theta = 90 - angle - beta
          bounce_azimuth = AsaMath.math_angle_to_azimuth(angle=2 * theta + angle)
  
          print "Beta:           " + str(beta)
          print "Incoming Angle: " + str(angle)
          print "ShorelineAngle: " + str(theta + angle)
          print "Bounce Azimuth: " + str(bounce_azimuth)
          print "Bounce Angle:   " + str(AsaMath.azimuth_to_math_angle(azimuth=bounce_azimuth))
  
          after_distance = distance - AsaGreatCircle.great_distance(start_point=start_point, end_point=hit_point)['distance']
          
          new_point = AsaGreatCircle.great_circle(distance=after_distance, azimuth=bounce_azimuth, start_point=hit_point)
          return Location4D(latitude=new_point['latitude'], longitude=new_point['longitude'], depth=start_point.depth)