 ### Nikhil Kumar

A stylish blog on my code

Changelog:

# Hermite and Catmull Rom Splines

In this post we will discuss the implementation of Hermite and Catmull Splines in SteerLite. The projects were created by a team of 3 as part of a class project for Introduction to Computer Graphics at Rutgers University.

## Hermite Videos

Curve 1

Curve 2

Curve 3

Curve 4

Original Test Case

### Equation

$p(x) = h_{00}(t)p_k + h_{10}(t)(x_{k+1} - x_{k})m_k + h_{01}(t)p_{k+1} +$ $h_{11}(t)(x_{k+1}-x_{k})m_{k+1}$

$t = \frac{(x-x_k)}{x_{k+1}-x_k}$ $h_{00}(t) = 2t^3 -3t^2 +1$ $h_{10}(t) = t^3 -2t^2 +t$ $h_{01}(t) = -2t^3 +3t^2$ $h_{11}(t) = t^3 - t^2$

## Catmull Rom Videos

Curve 1

Curve 2

Curve 3

Curve 4

Original Test Case

### Equation

$p(x) = h_{00}(t)p_k + h_{10}(t)(tangent_{0})m_k + h_{01}(t)p_{k+1} +$ $h_{11}(t)(tangent_{1})m_{k+1}$

$t = \frac{(x-x_k)}{x_{k+1}-x_k}$ $h_{00}(t) = 2t^3 -3t^2 +1$ $h_{10}(t) = t^3 -2t^2 +t$ $h_{01}(t) = -2t^3 +3t^2$ $h_{11}(t) = t^3 - t^2$

### Tangent Equation

Current point is the next point you will reach

$Tangent_0$ has i = currentPoint -1

$Tagent_1$ has i = currentPoint

#### If First Segment of Curve:

$FirstCoef = \frac{(t_2 - t_{0})}{(t_{2} - t_{1})}$ $FirsTerm = \frac{(p_{1} - p_0)}{ (t_{1} - t_0)}$ $SecondCoef = -1 * \frac{(t_{1} - t_0) }{(t_{2} - t_{1})}$ $SecondTerm = \frac{(p_2 - p_{0})}{(t_2 - t_{0})}$ $Tangent = firstCoeff * firstTerm +$ $secondCoeff * secondTerm$

#### If Last Segment of Curve:

$FirstCoef = \frac{(t_i - t_{i-})}{(t_{i-1} - t_{i-2})}$ $FirsTerm = \frac{(p_{i} - p_{i-1})}{ (t_{i} - t_{i-1})}$ $SecondCoef = -1 * \frac{(t_{i} - t_{i-1}) }{(t_{i-1} - t_{i-2})}$ $SecondTerm = \frac{(p_i - p_{i-2})}{(t_i - t_{i-2})}$ $Tangent = firstCoeff * firstTerm +$ $secondCoeff * secondTerm$

#### Any Segment between First and Last:

$FirstCoef = \frac{(t_i - t_{i-1})}{(t_{i+1} - t_{i-1})}$ $FirsTerm = \frac{(p_{i+1} - p_i)}{ (t_{i+1} - t_i)}$ $SecondCoef = \frac{(t_{i+1} - t_i) }{(t_{i+1} - t_{i-1})}$ $SecondTerm = \frac{(p_i - p_{i-1})}{(t_i - t_{i-1})}$ $Tangent = firstCoeff * firstTerm +$ $secondCoeff * secondTerm$