예제 #1
0
    def get_weights_ll2cs(self, dst, lat, lon, idxs):
        cs_obj = self.cs_obj
        ll_obj = self.ll_obj

        idx1, idx2, idx3, idx4 = idxs

        lat1, lon1 = ll_obj.latlons[idx1]
        lat2, lon2 = ll_obj.latlons[idx2]
        lat3, lon3 = ll_obj.latlons[idx3]
        lat4, lon4 = ll_obj.latlons[idx4]

        assert np.fabs(lon1-lon3)<1e-15
        assert np.fabs(lon2-lon4)<1e-15
        assert np.fabs(lat1-lat2)<1e-15
        assert np.fabs(lat3-lat4)<1e-15

        if lon2 < lon1: lon2 = lon1 + ll_obj.dlon
        if lon4 < lon3: lon4 = lon3 + ll_obj.dlon
        if np.fabs(lon-lon1) > np.pi: lon += 2*np.pi
        assert flge(lon1,lon,lon2), "dst={}, lon1={}, lon2={}, lon={}".format(dst,lon1,lon2,lon)
        assert flge(lat1,lat,lat3), "dst={}, lat1={}, lat3={}, lat={}".format(dst,lat1,lat2,lat)

        # weights
        x, y = lon, lat
        x1, x2 = lon1, lon2
        y1, y2 = lat1, lat3

        return self.get_bilinear_weights(dst, (x,y), (x1,y1), (x2,y2))
예제 #2
0
    def get_weights_cs2ll(self, dst, alpha, beta, panel, gids):
        cs_obj = self.cs_obj

        (a1,b1), (a2,b2), (a3,b3), (a4,b4) = \
                [cs_obj.alpha_betas[gid] for gid in gids]
        
        assert np.fabs(a1-a3)<1e-15
        assert np.fabs(a2-a4)<1e-15
        assert np.fabs(b1-b2)<1e-15
        assert np.fabs(b3-b4)<1e-15
        assert flge(a1,alpha,a2), "dst={}, a1={}, a2={}, alpha={}".format(dst,a1,a2,alpha)
        assert flge(b1,beta,b3), "dst={}, b1={}, b3={}, beta={}".format(dst,b1,b3,beta)

        panels = [cs_obj.gq_indices[gid,0] for gid in gids]
        for p in panels:
            if p != panel:
                print("(alpha,beta) ({},{})".foramt(alpha, beta))
                print("panel: {}, {}".format(panel, panels))
                print("dst: {}".format(dst))
                print("gids: {}".format(gids))
                sys.exit()

        # weights
        x, y = alpha, beta
        x1, x2 = a1, a2
        y1, y2 = b1, b3

        return self.get_bilinear_weights(dst, (x,y), (x1,y1), (x2,y2))