code: def _get_ut_i(self, seg, sx, sy):
          
          p0x, p0y, p1x, p1y = seg[0, 0], seg[0, 1], seg[1, 0], seg[1, 1]
          # Unit vector normal to strike
          t_i_vec = [p1y - p0y, -(p1x - p0x), 0.0]
          t_i_hat = t_i_vec / numpy.linalg.norm(t_i_vec)
          # Unit vector along strike
          u_i_vec = [p1x - p0x, p1y - p0y, 0.0]
          u_i_hat = u_i_vec / numpy.linalg.norm(u_i_vec)
          # Vectors from P0 to sites
          rsite = numpy.column_stack([sx - p0x, sy - p0y])
          return numpy.sum(u_i_hat[:-1] * rsite, axis=1),\
              numpy.sum(t_i_hat[:-1] * rsite, axis=1)
docs: Returns the U and T coordinate for a specific trace segment
  
          :param seg:
              End points of the segment edge
  
          :param sx:
              Sites longitudes rendered into coordinate system
  
          :param sy:
              Sites latitudes rendered into coordinate system