public async Task <IScatteredPointsLinearInterpolatorOnSphere> CreateAsync() { var cachingDecorator = await contextProvidingFactory.CreateAsync(); var adapter = new CellRequestToPointsAdapter <TContext>(weightsProvider); var facade = new TwoPhaseScatteredPointsLenearInterpolatorFacade <TContext>(cachingDecorator, adapter); return(facade); }
public CachingLinearWeightsProviderFactory2(IScatteredPointContextBasedLinearWeightProviderOnSphere <TContext> weightsProvider, IAsyncMap <INodes, TContext> contextProvider) { result = new AsyncLazy <IScatteredPointsLinearInterpolatorOnSphere>(async() => { var contextProvidingFactory = new AsyncMapCacheDecoratingFactory <INodes, TContext>(new HashBasedEquatibleINodesConverter(), contextProvider); var cachingDecorator = await contextProvidingFactory.CreateAsync(); var adapter = new CellRequestToPointsAdapter <TContext>(weightsProvider); var facade = new TwoPhaseScatteredPointsLenearInterpolatorFacade <TContext>(cachingDecorator, adapter); return(facade); }); }
public async Task GeoCellTupleToPointLinearInterpolatorAdapterTest() { var adapter = new CellRequestToPointsAdapter <Tuple <double, double> >(new Stub()); var context = await(new Stub2()).GetAsync(new NodesStub()); var cell = new RequestStubs() { LatMin = 5.0, LatMax = 7.0, LonMin = 11.0, LonMax = 13.0 }; var result = await adapter.GetLinearWeigthsAsync(cell, context); Assert.AreEqual(2, result.Length); Assert.AreEqual(0, result[0].DataIndex); Assert.AreEqual(1, result[1].DataIndex); Assert.AreEqual(2620.0 / 8580.0, result[0].Weight, TestConstants.DoublePrecision); //manual camputation Assert.AreEqual(5960.0 / 8580.0, result[1].Weight, TestConstants.DoublePrecision); }