# Path: pomp/klampt/vectorops.py
# def add(*items):
# def madd(a,b,c):
# def sub(a,b):
# def mul(a,b):
# def div(a,b):
# def maximum(a,b):
# def minimum(a,b):
# def dot(a,b):
# def normSquared(a):
# def norm(a):
# def unit(a,epsilon=1e-5):
# def norm_L1(a):
# def norm_Linf(a):
# def distanceSquared(a,b):
# def distance(a,b):
# def cross(a,b):
# def interpolate(a,b,u):


from ..klampt import vectorops
import math

class GeodesicSpace:
    def dimension(self):
        raise NotImplementedError()
    def distance(self,a,b):
        return vectorops.distance(a,b)
    def interpolate(self,a,b,u):
        return vectorops.interpolate(a,b,u)
    def difference(self,a,b):
        """For Lie groups, returns a difference vector that, when integrated
        would get to a from b.  In Cartesian spaces it is a-b."""

# Path: pomp/klampt/vectorops.py
# def add(*items):
# def madd(a,b,c):
# def sub(a,b):
# def mul(a,b):
# def div(a,b):
# def maximum(a,b):
# def minimum(a,b):
# def dot(a,b):
# def normSquared(a):
# def norm(a):
# def unit(a,epsilon=1e-5):
# def norm_L1(a):
# def norm_Linf(a):
# def distanceSquared(a,b):
# def distance(a,b):
# def cross(a,b):
# def interpolate(a,b,u):


# Path: pomp/spaces/geodesicspace.py
from ..klampt import vectorops
import math


class GeodesicSpace:
    def dimension(self):
        raise NotImplementedError()
    def distance(self,a,b):
        return vectorops.distance(a,b)
    def interpolate(self,a,b,u):
        return vectorops.interpolate(a,b,u)
    def difference(self,a,b):
        """For Lie groups, returns a difference vector that, when integrated
        would get to a from b.  In Cartesian spaces it is a-b."""

        return vectorops.sub(a,b)