code: def cone(plunge, bearing, angle, segments=100):
      
      plunges, bearings, angles = np.atleast_1d(plunge, bearing, angle)
      lons, lats = [], []
      for plunge, bearing, angle in zip(plunges, bearings, angles):
          lat = (90 - angle) * np.ones(segments, dtype=float)
          lon = np.linspace(-180, 180, segments)
          lon, lat = _rotate(lon, lat, -plunge, axis='y')
          lon, lat = _rotate(np.degrees(lon), np.degrees(lat), bearing, axis='x')
          lons.append(lon)
          lats.append(lat)
      return np.vstack(lons), np.vstack(lats)
docs: Calculates the longitude and latitude of the small circle (i.e. a cone)
      centered at the given *plunge* and *bearing* with an apical angle of
      *angle*, all in degrees.
  
      Parameters
      ----------
      plunge : number or sequence of numbers
          The plunge of the center of the cone(s) in degrees. The plunge is
          measured in degrees downward from the end of the feature specified by
          the bearing.
      bearing : number or sequence of numbers
          The bearing (azimuth) of the center of the cone(s) in degrees.
      angle : number or sequence of numbers
          The apical angle (i.e. radius) of the cone(s) in degrees.
      segments : int, optional
          The number of vertices in the small circle.
  
      Returns
      -------
      lon, lat : arrays
          `num_measurements` x `num_segments` arrays of longitude and latitude in
          radians.