inline float lerp(float t, float a, float b) { return a + t * (b - a); } code example
Example 1: java lerp
float lerp(float point1, float point2, float alpha){ return point1 + alpha * (point2 - point1);}
Example 2: unity lerp
using UnityEngine;
using System.Collections;public class ExampleClass : MonoBehaviour
{
// Transforms to act as start and end markers for the journey.
public Transform startMarker;
public Transform endMarker; // Movement speed in units per second.
public float speed = 1.0F; // Time when the movement started.
private float startTime; // Total distance between the markers.
private float journeyLength; void Start()
{
// Keep a note of the time the movement started.
startTime = Time.time; // Calculate the journey length.
journeyLength = Vector3.Distance(startMarker.position, endMarker.position);
} // Move to the target end position.
void Update()
{
// Distance moved equals elapsed time times speed..
float distCovered = (Time.time - startTime) * speed; // Fraction of journey completed equals current distance divided by total distance.
float fractionOfJourney = distCovered / journeyLength; // Set our position as a fraction of the distance between the markers.
transform.position = Vector3.Lerp(startMarker.position, endMarker.position, fractionOfJourney);
}
}