es.uvigo.ei.sing.laimages.core.operations.BilinearInterpolator.java Source code

Java tutorial

Introduction

Here is the source code for es.uvigo.ei.sing.laimages.core.operations.BilinearInterpolator.java

Source

/*
 * #%L
 * LA-iMageS Core
 * %%
 * Copyright (C) 2016 Marco Aurlio Zezzi Arruda, Gustavo de Souza
 *          Pessa, Jos Luis Capelo Martnez, Florentino Fdez-Riverola, Miguel
 *          Reboiro-Jato, Hugo Lpez-Fdez, and Daniel Glez-Pea
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public
 * License along with this program.  If not, see
 * <http://www.gnu.org/licenses/gpl-3.0.html>.
 * #L%
 */
package es.uvigo.ei.sing.laimages.core.operations;

import org.apache.commons.math3.analysis.interpolation.BivariateGridInterpolator;
import org.apache.commons.math3.exception.DimensionMismatchException;
import org.apache.commons.math3.exception.NoDataException;
import org.apache.commons.math3.exception.NonMonotonicSequenceException;
import org.apache.commons.math3.util.MathArrays;

public class BilinearInterpolator implements BivariateGridInterpolator {
    @Override
    public BilinearInterpolatingFunction interpolate(double[] xval, double[] yval, double[][] fval)
            throws NoDataException, DimensionMismatchException, NonMonotonicSequenceException {
        if (xval.length == 0 || yval.length == 0 || fval.length == 0) {
            throw new NoDataException();
        }
        if (xval.length != fval.length) {
            throw new DimensionMismatchException(xval.length, fval.length);
        }
        if (yval.length != fval[0].length) {
            throw new DimensionMismatchException(yval.length, fval[0].length);
        }

        MathArrays.checkOrder(xval);
        MathArrays.checkOrder(yval);

        return new BilinearInterpolatingFunction(xval, yval, fval);
    }
}