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];
}
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