示例#1
0
    def logmap(self, sd_vectors):
        # If we've been passed a single vector to map, then add the extra axis
        # Number of sample first
        if len(sd_vectors.shape) < 3:
            sd_vectors = sd_vectors[None, ...]

        longlat = cart2sph(-sd_vectors[..., 1], sd_vectors[..., 0],
                           sd_vectors[..., 2])
        longlat[..., 0] += np.pi

        c = np.arccos(
            np.sin(self.long0lat1[..., 1]) * np.sin(longlat[..., 1]) +
            np.cos(self.long0lat1[..., 1]) * np.cos(longlat[..., 1]) *
            np.cos(longlat[..., 0] - self.long0lat1[..., 0]))

        k = 1.0 / np.sin(c)
        k = np.nan_to_num(k)
        k = c * k

        v0 = k * (np.cos(longlat[..., 1]) *
                  np.sin(longlat[..., 0] - self.long0lat1[..., 0]))
        v1 = k * (np.cos(self.long0lat1[..., 1]) * np.sin(longlat[..., 1]) -
                  np.sin(self.long0lat1[..., 1]) * np.cos(longlat[..., 1]) *
                  np.cos(longlat[..., 0] - self.long0lat1[..., 0]))
        vs = np.dstack([v0[..., None], v1[..., None]])

        return vs
示例#2
0
文件: aep.py 项目: patricksnape/sfs
    def logmap(self, sd_vectors):
        # If we've been passed a single vector to map, then add the extra axis
        # Number of sample first
        if len(sd_vectors.shape) < 3:
            sd_vectors = sd_vectors[None, ...]

        longlat = cart2sph(-sd_vectors[..., 1], sd_vectors[..., 0],
                           sd_vectors[..., 2])
        longlat[..., 0] += np.pi

        c = np.arccos(np.sin(self.long0lat1[..., 1]) *
                      np.sin(longlat[..., 1]) +
                      np.cos(self.long0lat1[..., 1]) *
                      np.cos(longlat[..., 1]) *
                      np.cos(longlat[..., 0] - self.long0lat1[..., 0]))

        k = 1.0 / np.sin(c)
        k = np.nan_to_num(k)
        k = c * k

        v0 = k * (np.cos(longlat[..., 1]) * np.sin(longlat[..., 0] -
                  self.long0lat1[..., 0]))
        v1 = k * (np.cos(self.long0lat1[..., 1]) * np.sin(longlat[..., 1]) -
                  np.sin(self.long0lat1[..., 1]) * np.cos(longlat[..., 1]) *
                  np.cos(longlat[..., 0] - self.long0lat1[..., 0]))
        vs = np.dstack([v0[..., None], v1[..., None]])

        return vs
示例#3
0
 def __init__(self, base_vectors):
     super(AEP, self).__init__()
     self.base_vectors = base_vectors
     self.long0lat1 = cart2sph(-self.base_vectors[:, 1],
                               self.base_vectors[:, 0],
                               self.base_vectors[:, 2])
     self.long0lat1[:, 0] += np.pi
     self.long0lat1 = self.long0lat1[None, ...]
示例#4
0
文件: aep.py 项目: patricksnape/sfs
 def __init__(self, base_vectors):
     super(AEP, self).__init__()
     self.base_vectors = base_vectors
     self.long0lat1 = cart2sph(-self.base_vectors[:, 1],
                               self.base_vectors[:, 0],
                               self.base_vectors[:, 2])
     self.long0lat1[:, 0] += np.pi
     self.long0lat1 = self.long0lat1[None, ...]