Trilinear_interpolation Trilinear_interpolation

Trilinear interpolation - Definition and Overview

Related Words: Affix, Appendix, Approximation, Aside, Cadenza, Coda, Codicil, Commentary, Differentiation, Division, Enclitic, Envoi, Epilogue, Episode, Equation, Evolution, Extrapolation, Flourish, Graft, Grafting

Trilinear interpolation is the process of taking a three-dimensional set of numbers and interpolating the values linearly, finding a point using a weighted average of eight values.

Contents

Overview

The idea behind three-dimensional interpolation is that having some periodic volume of discrete data you can predict the value of a non-integer <math>x, y, z<math> within the plane. This is done using data for integer coordinate positions in the plane and using this, the aim is to try to predict a value for these non-integer <math>x, y, z<math> positions.

Differences from linear interpolation and bilinear interpolation

  • Trilinear interpolation works over a volume of numbers rather than
    • Linear which works over a line of values
    • Bilinear which works over a plane of values
  • Trilinear interpolation works with eight values (these are the integer coordinate positions surrounding the point)

Example

In order to trilinearly interpolate we need to look at the eight values surrounding the value we want. Let

<math>x_f, y_f, z_f<math>

be the fractional parts of

<math>x, y, z<math>,

that is:

<math>x_f = x - \lfloor x \rfloor<math>
<math>y_f = y - \lfloor y \rfloor<math>
<math>z_f = z - \lfloor z \rfloor<math>

First we interpolate along <math>z<math>, giving:

<math>i_1 = v[\lfloor x \rfloor,\lfloor y \rfloor, \lfloor z \rfloor] \times (1 - z_f) + v[\lfloor x \rfloor, \lfloor y \rfloor, \lceil z \rceil] \times z_f<math>
<math>i_2 = v[\lfloor x \rfloor,\lceil y \rceil, \lfloor z \rfloor] \times (1 - z_f) + v[\lfloor x \rfloor, \lceil y \rceil, \lceil z \rceil] \times z_f<math>
<math>j_1 = v[\lceil x \rceil,\lfloor y \rfloor, \lfloor z \rfloor] \times (1 - z_f) + v[\lceil x \rceil, \lfloor y \rfloor, \lceil z \rceil] \times z_f<math>
<math>j_2 = v[\lceil x \rceil,\lceil y \rceil, \lfloor z \rfloor] \times (1 - z_f) + v[\lceil x \rceil, \lceil y \rceil, \lceil z \rceil] \times z_f.<math>

Then we interpolate these values (along <math>y<math>), giving:

<math>w_1 = i_1(1 - y_f) + i_2y_f<math>
<math>w_2 = j_1(1 - y_f) + j_2y_f<math>

Finally we interpolate these value along <math>x<math>:

<math>IV = w_1(1 - x_f) + w_2x_f .<math>

This gives us a predicted value for the point.

Note that the result of trilinear interpolation is independent of the order of interpolation, that is, performing the linear interpolations in the other order, along <math>x<math>, along <math>y<math>, then along <math>z<math> horizontally, would also produce an equivalent expression for the predicted value.

See also

Example Usage of interpolation

BibleAlsoSays: @findo Lets call it an unauthorized interpolation not made by the author then
noramoss: @josh2385 just like a great player can change the rules of a sport. A weird case can change the laws of cri or interpolation.
evgeny_goldin: #Maven variables interpolation in POM now clashes with #Groovy GString ("${var}") - one more reason to have a way to disable or escape it!
Copyright 2009 WordIQ.com - Privacy Policy  :: Terms of Use  :: Contact Us  :: About Us
This article is licensed under the GNU Free Documentation License. It uses material from the this Wikipedia article.