interpolation/Linear/Vectors

From Second Life Wiki
< Interpolation‎ | Linear
Revision as of 13:10, 16 September 2011 by Nexii Malthus (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Summary

Function: vector pLin( list v, float t, integer Loop );

Linearly interpolates between two vector points in a list of vectors that define a path.
Returns a vector

• list v
• float t Ranges between [0, 1]
• integer Loop Whether the list is a curved line or loops into a closed shape.

Specification

<lsl>vector pLin(list v, float t, integer Loop) {

   integer l = llGetListLength(v); t *= l-1;
   integer f = llFloor(t); t -= f;
   return llList2Vector(v,pIndex(f,l,Loop))*(1-t) + llList2Vector(v,pIndex(f+1,l,Loop))*t;

} integer pIndex( integer Index, integer Length, integer Loop) {

   if(Loop) return Index % Length;
   if(Index < 0) return 0;
   if(Index > --Length) return Length;
   return Index;

} // Released into public domain. By Nexii Malthus.</lsl>

Examples

<lsl></lsl>