docs: def distance_to_semi_arc(alon, alat, aazimuth, plons, plats):
      """
      In this method we use a reference system centerd on (alon, alat) and with
      the y-axis corresponding to aazimuth direction to calculate the minimum
      distance from a semiarc with generates in (alon, alat).
  
      Parameters are the same as for :func:`distance_to_arc`.
      """
  
      if type(plons) is float:
          plons = numpy.array([plons])
          plats = numpy.array([plats])
  
      azimuth_to_target = azimuth(alon, alat, plons, plats)
  
      # Find the indexes of the points in the positive y halfspace
      idx = numpy.nonzero(numpy.cos(
          numpy.radians((aazimuth-azimuth_to_target))) > 0.0)
  
      # Find the indexes of the points in the negative y halfspace
      idx_not = numpy.nonzero(numpy.cos(
          numpy.radians((aazimuth-azimuth_to_target))) <= 0.0)
  
      idx_ll_quadr = numpy.nonzero(
          (numpy.cos(numpy.radians((aazimuth-azimuth_to_target))) <= 0.0) &
          (numpy.sin(numpy.radians((aazimuth-azimuth_to_target))) > 0.0))
  
      # Initialise the array containing the final distances
      distance = numpy.zeros_like(plons)
  
      # Compute the distance between the semi-arc with 'aazimuth' direction
      # and the set of sites in the positive half-space. The shortest distance to
      # the semi-arc in this case can be computed using the function
      # :func:`openquake.hazardlib.geo.geodetic.distance_to_arc`.
      if len(idx):
          distance_to_target = geodetic_distance(alon, alat,
                                                 plons[idx], plats[idx])
          t_angle = (azimuth_to_target[idx] - aazimuth + 360) % 360
          angle = numpy.arccos((numpy.sin(numpy.radians(t_angle)) *
                                numpy.sin(distance_to_target /
                                          EARTH_RADIUS)))
          distance[idx] = (numpy.pi / 2 - angle) * EARTH_RADIUS
  
      # Compute the distance between the reference point and the set of sites
      # in the negative half-space. The shortest distance for the semi-arc for
      # all the points in the negative semi-space simply corresponds to the
      # shortest distance to its origin.
      if len(idx_not):
          distance[idx_not] = geodetic_distance(alon, alat,
                                                plons[idx_not], plats[idx_not])
          distance[idx_ll_quadr] = -1 * distance[idx_ll_quadr]
  
      return distance