# Help understanding trilinear interpolation formula

## Recommended Posts

I need to perform trilinear interpolation between two 3 dimensional vectors in my vertex shader. I haven't been able to find well explained formula for doing this. If someone doesn't mind linking me or giving me a brief explanation, that would be appreciated. Up to this point I've just been using the Lerp routines in the vectors. Thanks

#### Share this post

##### Share on other sites
Quote:
 Original post by Jeremy6996I need to perform trilinear interpolation between two 3 dimensional vectors in my vertex shader.
Are you sure you actually mean tri-linear interpolation? A linear interpolation is done between 2 values (w/o restricting "values" to scalars here, i.e. they can be vectors, too). A bi-linear interpolation is a linear interpolation of 2 already linear interpolated values. And a tri-linear interpolation is a linear interpolation between 2 already bi-linear interpolated values. That said, a tri-linear interpolation is done using 8 values (2x2x2).

Now, you actually have 6 scalar values due to 2 3D vectors. Even if these 6 velues are uncommonly organized in 2 3D vectors (I mean uncommonly w.r.t. the scheme described above), there would be a lack of 2 values.

Hence you probably just want to perform a linear interpolation of 2 3D vectors. Assuming that the vector is defined in Cartesian space, this means to do 3 independent linear interpolation between the 2 scalars of each dimension.

#### Share this post

##### Share on other sites
Quote:
Original post by haegarr
Quote:
 Original post by Jeremy6996I need to perform trilinear interpolation between two 3 dimensional vectors in my vertex shader.
Are you sure you actually mean tri-linear interpolation? A linear interpolation is done between 2 values (w/o restricting "values" to scalars here, i.e. they can be vectors, too). A bi-linear interpolation is a linear interpolation of 2 already linear interpolated values. And a tri-linear interpolation is a linear interpolation between 2 already bi-linear interpolated values. That said, a tri-linear interpolation is done using 8 values (2x2x2).

Now, you actually have 6 scalar values due to 2 3D vectors. Even if these 6 velues are uncommonly organized in 2 3D vectors (I mean uncommonly w.r.t. the scheme described above), there would be a lack of 2 values.

Hence you probably just want to perform a linear interpolation of 2 3D vectors. Assuming that the vector is defined in Cartesian space, this means to do 3 independent linear interpolation between the 2 scalars of each dimension.

Yeah, sorry, I was doing some wiki-ing, and I got confused when it said something about trilinear on 3 dimensional vectors.

Linear is what I'm after. Thanks.

pu = p0 + u(p1 - p0)

So(pseudo code)

float[] vec1 = float[3];float[] vec2 = float[3];float[] interpolatedVec[3];for(int i = 0; i < 3; i++)    interpolatedVec[i] = vec1[i] + fAmount(vec2[i] - vec1[i]);

#### Share this post

##### Share on other sites
If you're looking for linear interpolation, then I'm not surprised you haven't found it explained in full as it's pretty trivial. I guess its the term that has you confused, not the actual process.

Assuming your interpolator ranges between 0 and 1 (it should), then:

NewVal = Val2*Interpolator + Val1*(1-Interpolator)

What you're saying here is "Gimme a bit from this one, and the rest from the other one".

As long as all three are the same, you can use any types you like for those vals.

EDIT: Just re-read your post. "Lerp" being short for "Linear Interpolation" then you're already right on the money! :)

## Create an account or sign in to comment

You need to be a member in order to leave a comment

## Create an account

Sign up for a new account in our community. It's easy!

Register a new account

## Sign in

Already have an account? Sign in here.

Sign In Now

• ## Partner Spotlight

• ### Forum Statistics

• Total Topics
627671
• Total Posts
2978552

• 11
• 10
• 10
• 12
• 22