Difference between revisions of "Interpolation/Hermite/Vector"

From Second Life Wiki
Jump to navigation Jump to search
m
m
Line 15: Line 15:
|spec=<lsl>vector vHem(vector a, vector b, vector c, vector d, float t, float tens, float bias){
|spec=<lsl>vector vHem(vector a, vector b, vector c, vector d, float t, float tens, float bias){
     float t2 = t*t;float t3 = t2*t;
     float t2 = t*t;float t3 = t2*t;
     vectora 0 =  (b-a)*(1+bias)*(1-tens)/2;
     vector a0 =  (b-a)*(1+bias)*(1-tens)/2;
           a0 += (c-b)*(1-bias)*(1-tens)/2;
           a0 += (c-b)*(1-bias)*(1-tens)/2;
     vector a1 =  (c-b)*(1+bias)*(1-tens)/2;
     vector a1 =  (c-b)*(1+bias)*(1-tens)/2;

Revision as of 14:01, 24 February 2012

Summary

Function: vector vHem( vector a, vector b, vector c, vector d, float t, float tens, float bias );

Hermite interpolation of vectors a, b, c and d with fraction t, tension and bias.
Returns a vector

• vector a
• vector b
• vector c
• vector d
• float t
• float tens
• float bias

Specification

<lsl>vector vHem(vector a, vector b, vector c, vector d, float t, float tens, float bias){

   float t2 = t*t;float t3 = t2*t;
   vector a0 =  (b-a)*(1+bias)*(1-tens)/2;
          a0 += (c-b)*(1-bias)*(1-tens)/2;
   vector a1 =  (c-b)*(1+bias)*(1-tens)/2;
          a1 += (d-c)*(1-bias)*(1-tens)/2;
   float b0 =  2*t3 - 3*t2 + 1;
   float b1 =    t3 - 2*t2 + t;
   float b2 =    t3 -   t2;
   float b3 = -2*t3 + 3*t2;
   return b0 * b + b1 * a0 + b2 * a1 + b3 * c;

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

Examples

<lsl></lsl>