Рассмотрим простой пример: есть домик с кирпичными стенами. Решить задачу описания грани домика достаточно сложно. Можно было бы описать стенку, но это тоже сложно, поэтому эту стенку рисуют отдельно, а потом накладывают в качестве текстуры на нужную грань.
xt1, y t1 x t2, y t2
Рис. 4.1.1
| |||
В ряде случаев могут получаться искажения
Рис. 4.1.2
Чем больше перспективное искажение, тем больше эти искажающие эффекты.
Решается следующая задача: в плоскости изображения имеется некоторый прямоугольник и bmp-картинка, которую нам надо вписать в этот прямоугольник. Эту задачу можно сформулировать иначе: имеется некоторый многоугольник и картинка, ему соответствующая. Многоугольник задан текстурными координатами, по которым из текстурного поля вырезается определённый кусок и наносится на объект.
4.2. Коррекция текстуры
P x2 y2 h2 xt2 y t2
i=N-1
X2 Y2 Z2 S2 xt2 yt2
x1 y1 h1 xt1 yt1 xt(i) yt(i) h
xt yt s
|
i=0
X1 Y1 Z1 S1 xt1 yt1
Рис. 4.2
s-s1
xt = xt1 + ¾¾¾ (x t2 - x t1)
s2-s1
s-s1
yt = yt1 + ¾¾¾ (y t2 - y t1)
s2-s1
Линейная интерполяция:
A
h = ¾ - B ;
S
|
ih2 + B
xt(i) = xt1 + ¾¾ (x t2 - x t1) ¾¾¾
N-1 h(i)+ B
ih2 + B
yt(i) = yt1 + ¾¾ (y t2 - y t1) ¾¾¾
N-1 h(i)+ B