Monday, 20 November 2017

Interpolation

float fractionX = ... //the fraction part of the x coordinate
float integerX = ... //the integer part of the x coordinate
float fractionY, integerY = ...
interpolatedValue = (1 - fractionX) *
                        ((1 - fractionY) * data[integerX, integerY] +
                         fractionY * data[integerX, integerY + 1]) +
                    fractionX *
                        ((1 - fractionY) * data[integerX + 1, integerY] +
                        fractionY * data[integerX + 1, integerY + 1]);

if (fractionX < fractionY) //the upper triangle
{
    interpolatedValue = (1 - fractionY) * data[integerX, integerY] +
                        fractionX * data[integerX + 1, integerY + 1] +
                        (fractionY - fractionX) * data[integerX, integerY + 1];
}
else //the lower triangle
{
    interpolatedValue = (1 - fractionX) * data[integerX, integerY] +
                        fractionY * data[integerX + 1, integerY + 1] +
                        (fractionX - fractionY) * data[integerX + 1, integerY];
}

No comments:

Post a Comment