Упаковка (графика)
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
В компьютерной графике перенос — это процесс ограничения позиции областью. Хорошим примером обертывания являются обои : одиночный рисунок, бесконечно повторяющийся на стене . Обертывание используется в компьютерной 3D-графике для повторения текстуры по многоугольнику , что устраняет необходимость в больших текстурах или нескольких многоугольниках.
Чтобы обернуть позицию x в область шириной w , вычислите значение .
Выполнение
[ редактировать ]целей завернутое значение x ' x Для вычислительных может быть выражено как
где является самым высоким значением в диапазоне, и это самое низкое значение в диапазоне.
Псевдокод для переноса значения в диапазон, отличный от 0–1:
function wrap(X, Min, Max: Real): Real; X := X - Int((X - Min) / (Max - Min)) * (Max - Min); if X < 0 then // This corrects the problem caused by using Int instead of Floor X := X + Max - Min; return X;
Псевдокод для переноса значения в диапазон 0–1 :
function wrap(X: Real): Real; X := X - Int(X); if X < 0 then X := X + 1; return X;
Псевдокод для переноса значения в диапазон от 0 до 1 без ветвления:
function wrap(X: Real): Real; return ((X mod 1.0) + 1.0) mod 1.0;