float tt4 = tt2 / ( 62 * 62 );
float du = tt1 / ( d1 * d2 );
float dv = tt2 / ( d1 * d2 );
float aO = du1 /d1;
float a1 = tt1 /(d1 * d1 );
float a2 = ( 3 * du - 2 * a1 - }t3 ) * invDx;
float a3 = (-2 * du + a1 + tt3 ) * invDx * invDx;
float bO =dv1 /d1;
float b1 =tt2/(d1 *d1 );
float b2 = ( 3 * dv - 2 * b1 - tt4 ) * invDx;
float b3 = (-2 * dv + b1 + tt4 ) * invDx * invDx;
float deltaUl = a1 + a2 + a3;
float deltaU2 = 6 * a3 + 2 * a2;
float deltaU3 = 6 * a3;
float deltaVI = b1 + b2 + b3;
float deltaV2 = 6 * b3 + 2 * b2;
float deltaV3 = 6 * b3;
float u = aO;
float v = bO;
for (int x = x1; x < x2; x++ ) {
puttexel ( x, y, u, v );
u +=deltaU1; v +=deltaV1; deltaUl += deltaU2; deltaVI += deltaV2; deltaU2 += deltaU3; deltaV2 += deltaV3;
}
if (y<pr[1].y) x1 += dx01;
else
x1 += dx12;
if (y < pr [3].y ) x2 += dx03; else
x2 += dx32;
}
}
При этом получается изображение, как на рис. 13.32.
Поскольку значения параметров текстур на ребрах задаются точно, то искажения происходят только внутри граней и проблем со стыковкой граней между собой не возникает.
Компьютерная графика. Полигональные модели Возможно и дальнейшее повышение порядка интерполяции, однако при этом заметно возрастает сложность вычисления необходимых коэффициентов, а получающийся выигрыш оказывается небольшим.
Искажения связаны с ориентацией грани и расстоянием до нее.
Интерполяция может проходить как по столбцам, так и по строкам.
Для построения достаточно качественного изображения удобно применять адаптивные схемы, которые в зависимости от ориентации грани и расстояния, до нее выбирают наиболее оптимальный вариант - рисование по строкам или столбцам, вид интерполяции.
Повысить качество интерполяции можно за счет введения промежуточных точек, для чего внутри требуемого интервала выбирается несколько вспомогательных точек и вычисляются значения параметров текстуры в этих точках. После этого параметры интерполируются уже внутри получившихся частичных интервалов, обеспечивая повышение качества интерполяции. Таким образом можно, например, вычислять точное значение текстуры через каждые 8-16 пикселов и применять интер поляцию в промежуточных точках.