class_docstr: Base class for other distance algorithms. Represents a distance.
  
  Can be used for units conversion::
  
      >>> from geopy.distance import Distance
      >>> Distance(miles=10).km
      16.09344
  
  Distance instances have all *distance* properties from :mod:`geopy.units`,
  e.g.: ``km``, ``m``, ``meters``, ``miles`` and so on.
  
  Distance instances are immutable.
  
  They support comparison::
  
      >>> from geopy.distance import Distance
      >>> Distance(kilometers=2) == Distance(meters=2000)
      True
      >>> Distance(kilometers=2) > Distance(miles=1)
      True
  
  String representation::
  
      >>> from geopy.distance import Distance
      >>> repr(Distance(kilometers=2))
      'Distance(2.0)'
      >>> str(Distance(kilometers=2))
      '2.0 km'
      >>> repr(Distance(miles=2))
      'Distance(3.218688)'
      >>> str(Distance(miles=2))
      '3.218688 km'
  
  Arithmetics::
  
      >>> from geopy.distance import Distance
      >>> -Distance(miles=2)
      Distance(-3.218688)
      >>> Distance(miles=2) + Distance(kilometers=1)
      Distance(4.218688)
      >>> Distance(miles=2) - Distance(kilometers=1)
      Distance(2.218688)
      >>> Distance(kilometers=6) * 5
      Distance(30.0)
      >>> Distance(kilometers=6) / 5
      Distance(1.2)
docstr: Calculate destination point using a starting point, bearing
  and a distance. This method works for non-abstract distances only.
  
  Example: a point 10 miles east from ``(34, 148)``::
  
      >>> import geopy.distance
      >>> geopy.distance.distance(miles=10).destination((34, 148), bearing=90)
      Point(33.99987666492774, 148.17419994321995, 0.0)
  
  :param point: Starting point.
  :type point: :class:`geopy.point.Point`, list or tuple of ``(latitude,
      longitude)``, or string as ``"%(latitude)s, %(longitude)s"``.
  
  :param float bearing: Bearing in degrees: 0 -- North, 90 -- East,
      180 -- South, 270 or -90 -- West.
  
  :param distance: Distance, can be used to override
      this instance::
  
          >>> from geopy.distance import distance, Distance
          >>> distance(miles=10).destination((34, 148), bearing=90, distance=Distance(100))
          Point(33.995238229104764, 149.08238904409637, 0.0)
  
  :type distance: :class:`.Distance`
  
  :rtype: :class:`geopy.point.Point`
docstr_tok: ["Calculate","destination","point","using","a","starting","point",",","bearing","and","a","distance",".","This","method","works","for","non-abstract","distances","only",".","Example",":","a","point","10","miles","east","from","``","(","34",",","148",")","``",":",":",">",">",">","import","geopy.distance",">",">",">","geopy.distance.distance","(","miles=10",")",".destination","(","(","34",",","148",")",",","bearing=90",")","Point","(","33.99987666492774",",","148.17419994321995",",","0.0",")",":","param","point",":","Starting","point",".",":","type","point",":",":","class",":","`","geopy.point.Point","`",",","list","or","tuple","of","``","(","latitude",",","longitude",")","``",",","or","string","as","``","``","%","(","latitude",")","s",",","%","(","longitude",")","s","''","``",".",":","param","float","bearing",":","Bearing","in","degrees",":","0","--","North",",","90","--","East",",","180","--","South",",","270","or","-90","--","West",".",":","param","distance",":","Distance",",","can","be","used","to","override","this","instance",":",":",">",">",">","from","geopy.distance","import","distance",",","Distance",">",">",">","distance","(","miles=10",")",".destination","(","(","34",",","148",")",",","bearing=90",",","distance=Distance","(","100",")",")","Point","(","33.995238229104764",",","149.08238904409637",",","0.0",")",":","type","distance",":",":","class",":","`",".Distance","`",":","rtype",":",":","class",":","`","geopy.point.Point","`"]
code: def destination(self, point, bearing, distance=None):
      """
          Calculate destination point using a starting point, bearing
          and a distance. This method works for non-abstract distances only.
  
          Example: a point 10 miles east from ``(34, 148)``::
  
              >>> import geopy.distance
              >>> geopy.distance.distance(miles=10).destination((34, 148), bearing=90)
              Point(33.99987666492774, 148.17419994321995, 0.0)
  
          :param point: Starting point.
          :type point: :class:`geopy.point.Point`, list or tuple of ``(latitude,
              longitude)``, or string as ``"%(latitude)s, %(longitude)s"``.
  
          :param float bearing: Bearing in degrees: 0 -- North, 90 -- East,
              180 -- South, 270 or -90 -- West.
  
          :param distance: Distance, can be used to override
              this instance::
  
                  >>> from geopy.distance import distance, Distance
                  >>> distance(miles=10).destination((34, 148), bearing=90, \
  distance=Distance(100))
                  Point(33.995238229104764, 149.08238904409637, 0.0)
  
          :type distance: :class:`.Distance`
  
          :rtype: :class:`geopy.point.Point`
          """
      raise NotImplementedError("Distance is an abstract class")
  
imports: from math import asin, atan2, cos, sin, sqrt
  from geographiclib.geodesic import Geodesic
  from geopy import units, util
  from geopy.point import Point
  from geopy.units import radians
label_desc: Use image node_id 12 for calling the Distance obj's underlying member method code with example usage: obj.destination(point, bearing, distance) without return types