# Can you help me make an algorithm out of these parameters?

I’m trying to have an object be a specific size when at point A but another specific size at point B and linearly interpolate between those sizes when moved.

I’m thinking about having the algorithm’s return type be a Vector3 so I can just do this:
`transform.localScale = algorithm;`

I know this is more of a math question than anything else but I couldn’t find any site featuring a forum for math problems so I just posted here.

To linearly interpolate between two 3d points, you need to calculate the vector difference between your two points. This is easy: V = B-A

Once you know this, you move from A to B as a percentage of the difference vector. For example, the halfway point between A and B would be : H = A + 0.5 V

This can be applied to scale also, since it’s represented by a Vector3.

If you want to change the scale based on the distance traveled from A to B, you have to calculate what percentage of the distance has been traveled. You can do this using the Vector3.Distance function.

``````percentTraveled = Vector3.Distance( A, currentPosition ) / Vector3.Distance( A, B );
``````

Once you know this, just linearly interpolate between the initial scale and final scale using Vector3.Lerp.

``````scale = Vector3.Lerp( initialScale, finalScale, percentTraveled );
``````