Wrapping (graphics)

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

Lua error in package.lua at line 80: module 'strict' not found.

In computer graphics, wrapping is the process of limiting a position to an area. A good example of wrapping is wallpaper, a single pattern repeated indefinitely over a wall. Wrapping is used in 3D computer graphics to repeat a texture over a polygon, eliminating the need for large textures or multiple polygons.

To wrap a position x to an area of width w, calculate the value x' \equiv x \pmod{w}.

Implementation

For computational purposes the wrapped value x' of x can be expressed as

x' = x - \lfloor (x - x_{min}) / (x_{max} - x_{min}) \rfloor * (x_{max} - x_{min})

where x_{max} is the highest value in the range, and x_{min} is the lowest value in the range.

Pseudocode for wrapping of a value to a range other than 0-1 is

 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;

Pseudocode for wrapping of a value to a range of 0-1 is

 function wrap(X: Real): Real;
   X := X - Int(X);
   if X < 0 then
     X := X + 1;
   return X;

Pseudocode for wrapping of a value to a range of 0-1 without branching is,

 function wrap(X: Real): Real;
   return ((X mod 1.0) + 1.0) mod 1.0;

See also