| 1 | 
greg | 
2.1 | 
{ RCSid: $Id$ } | 
| 2 | 
  | 
  | 
{ | 
| 3 | 
  | 
  | 
        Interpolate triangle-mesh values using barycentric coordinates. | 
| 4 | 
  | 
  | 
 | 
| 5 | 
  | 
  | 
        A1              = Major axis (0==X, 1==Y, 2==Z) | 
| 6 | 
  | 
  | 
        A2 through A10  = Surface normal perturbation matrix | 
| 7 | 
  | 
  | 
or: | 
| 8 | 
  | 
  | 
        A2 through A7   = Lookup in 2-dimensional pattern or texture | 
| 9 | 
  | 
  | 
} | 
| 10 | 
  | 
  | 
                                        { Get dominant coordinates } | 
| 11 | 
  | 
  | 
bu = select(arg(1)+1, Py, Pz, Px); | 
| 12 | 
  | 
  | 
bv = select(arg(1)+1, Pz, Px, Py); | 
| 13 | 
  | 
  | 
                                        { Compute variables } | 
| 14 | 
  | 
  | 
v1 = bu*arg( 2) + bv*arg( 3) + arg( 4); | 
| 15 | 
  | 
  | 
v2 = bu*arg( 5) + bv*arg( 6) + arg( 7); | 
| 16 | 
  | 
  | 
v3 = bu*arg( 8) + bv*arg( 9) + arg(10); | 
| 17 | 
  | 
  | 
                                        { Surface normal perturbation } | 
| 18 | 
  | 
  | 
nf = 1/sqrt(v1*v1 + v2*v2 + v3*v3); | 
| 19 | 
  | 
  | 
dx = v1*nf - Nx; | 
| 20 | 
  | 
  | 
dy = v2*nf - Ny; | 
| 21 | 
  | 
  | 
dz = v3*nf - Nz; | 
| 22 | 
  | 
  | 
                                        { Lookup table index } | 
| 23 | 
  | 
  | 
u = v1; | 
| 24 | 
  | 
  | 
v = v2; |