Skip to content

Instantly share code, notes, and snippets.

@rikwatson
Created August 2, 2012 15:24
Show Gist options
  • Save rikwatson/8af5b6b0a760a747df0e to your computer and use it in GitHub Desktop.
Save rikwatson/8af5b6b0a760a747df0e to your computer and use it in GitHub Desktop.
Some Catmull-Rom code scraped from the web
void PointOnCurve(TrackPoint &out, float t, TrackPoint p0, TrackPoint p1, TrackPoint p2, TrackPoint p3)
{
float t2 = t * t;
float t3 = t2 * t;
float tension = 0.5f;
out.x = 0.5f * ( ( 2.0f * p1.x ) +
( -p0.x + p2.x ) * t +
( 2.0f * p0.x - 5.0f * p1.x + 4 * p2.x - p3.x ) * t2 +
( -p0.x + 3.0f * p1.x - 3.0f * p2.x + p3.x ) * t3 );
out.y = 0.5f * ( ( 2.0f * p1.y ) +
( -p0.y + p2.y ) * t +
( 2.0f * p0.y - 5.0f * p1.y + 4 * p2.y - p3.y ) * t2 +
( -p0.y + 3.0f * p1.y - 3.0f * p2.y + p3.y ) * t3 );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment